12

我正在尝试使用最大 2 位小数精度的数字字符串,而其余小数只是修剪掉而不是四舍五入。例如:

I have: 123456.9964

I want: 123456.99 -> Just want to trim rest of the decimal places

我尝试过的是:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat: 123456.9964]];
 NSLog(@"%@", numberAsString);

没有什么可以将舍入模式设置为“无”。我还能做些什么来保持十进制样式格式以及修剪的十进制数字?任何帮助将不胜感激。谢谢。

4

4 回答 4

21

以下对我有用:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:2];
// optional - [numberFormatter setMinimumFractionDigits:2];
[numberFormatter setRoundingMode:NSNumberFormatterRoundDown];
NSNumber *num = @(123456.9964);
NSString *numberAsString = [numberFormatter stringFromNumber:num];
NSLog(@"%@", numberAsString);

输出为:123,456.99

您的部分问题是使用 ofnumberWithFloat:而不是numberWithDouble:. 您的号码的位数过多float

于 2013-03-07T06:34:24.690 回答
1

你可以用这个

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setRoundingMode:NSNumberFormatterRoundDown];
[numberFormatter setMaximumFractionDigits:2];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble: 123456.9964]];
NSLog(@"%@", numberAsString);
于 2013-03-07T06:35:00.350 回答
0
[numberFormatter setRoundingMode: NSNumberFormatterRoundDown];

使用此代码。

于 2013-03-07T06:06:10.897 回答
-1

您也可以只使用 round() 然后将其转换为字符串

var y = round(100 * 123456.8864) / 100

var x:String = String(format:"%.2f", y)
println("x: \(x)")

将打印 x: 123456.89,将 8 舍入为 9。

于 2015-04-05T15:24:39.767 回答