我正在处理多个区域设置号码。例如:
我的代码将小数点分隔符后面的最后一位数字向上舍入:
NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setLocale:[NSLocale currentLocale]];
[formatter setMinimumFractionDigits:2];
[formatter setMaximumFractionDigits:2];
double myValue = [[formatter numberFromString:@"123.458"] doubleValue];
double myValue2 = [[formatter numberFromString:@"123.444"] doubleValue];
NSString *rezult = [formatter stringFromNumber:[NSNumber numberWithDouble:myValue]];
NSString *rezult2 = [formatter stringFromNumber:[NSNumber numberWithDouble:myValue2]];
NSLog(@"rezult = %@", rezult); //gives 123.46 - incorrect
NSLog(@"rezult2 = %@", rezult2);//gives 123.44 - correct
请建议如何防止四舍五入。
请记住,我不能这样做:
double aDouble = 1234.56789;
NSString *stri = [NSString stringWithFormat:@"%.2f", aDouble];
NSLog(@"%@", stri); //result is 1234.56 - correct (not rounded up to 1234.57)
...因为我必须使用* formatter设置* stri(见上文)。
我想NSNumberFormatter
必须有一些额外的设置,不是吗?
提前致谢。
编辑1
解决方案:在声明NSNumberFormatter之后,还要说:
[formatter setRoundingMode: NSNumberFormatterRoundDown];
感谢@Price的快速解决方案。主题已关闭。
答案 0 :(得分:3)
您可以添加:
[formatter setRoundingMode: NSNumberFormatterRoundDown];