2009-01-09 58 views

回答

10
NSString *value = [NSString stringWithFormat:@"%.3f", theFloat]; 
2
myFloat = round(myfloat * 1000)/1000.0; 
+0

谢谢凯文。但在打印时,我仍然得到.xxx000。它的000我不想要。那就是为什么我问是否需要使用NSNumberFormatter – lostInTransit 2009-01-09 07:01:25

1

尝试格式化浮动为“%5.3f”或类似的显示目的

...像扎克兰利在他更好的答案一样。

4

如果你想要去的NSDecimalNumber路线,你可以使用以下命令:

NSDecimalNumber *testNumber = [NSDecimalNumber numberWithDouble:theFloat]; 
NSDecimalNumberHandler *roundingStyle = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundBankers scale:3 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO]; 
NSDecimalNumber *roundedNumber = [testNumber decimalNumberByRoundingAccordingToBehavior:roundingStyle]; 
NSString *stringValue = [roundedNumber descriptionWithLocale:[NSLocale currentLocale]]; 

这将使用银行家四舍五入到3个数字:“取整到最接近的可能的返回值;当在两种可能性之间的中间位置,返回最后一位数字是偶数的可能性,实际上,这意味着,从长远来看,数字将被四舍五入,并且不会出现系统偏差。此外,它将使用特定于语言环境的小数点分隔符(“。”,“,”等)。然而,如果你有一个像12.5这样的数值,它将返回“12.5”,而不是“12.500”,这可能不是你正在寻找的东西。