如何避免在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。