如何避免在NSNumberFormatter四舍五入

我想要有一个数字string,最大精度为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); 

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

以下为我工作:

 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

你的问题的一部分是使用numberWithFloat:而不是numberWithDouble: 你的号码有太多的float

你可以使用这个

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

使用这个代码。

你也可以使用round(),然后把它转换成一个string

 var y = round(100 * 123456.8864) / 100 var x:String = String(format:"%.2f", y) println("x: \(x)") 

将打印x:123456.89,四舍五入到9。

Interesting Posts