2009-01-09 82 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」,這可能不是你正在尋找的東西。