我試圖將浮點數顯示爲小數點後一位。我得到意想不到的結果如下:使用%.1f時打印的意外值
代碼:
float a = 1.25;
float b = 1.35;
NSLog(@"1.25 -> %.1f\n1.35 -> %.1f",a,b);
輸出:
1.25 - > 1.2
1.35 - > 1.4
預期輸出,要麼:
1.25 - > 1.3
1.35 - > 1.4
或:
1.25 - > 1.2
1.35 - > 1.3
這是隻是由於b之間的內部轉換inary和小數?如果是這樣,我如何得到預期的行爲?
我正在使用Xcode 4.6。
編輯:好的,感謝TonyK和H2CO3,這是由於小數的二進制表示。
float a = 1.25;
float b = 1.35;
NSLog(@"1.25 -> %.30f\n1.35 -> %.30f",a,b);
1.25 - > 1.250000000000000000000000000000
1.35 - > 1.350000000000000088817841970013
很多好消息,但據我所見,沒有人走近第二個問題:我如何得到預期的行爲?
Rounding numbers in Objective-C是一個完全不同的問題。
這涉及到所有的C語言,而不僅僅是目標C.你得到什麼取決於系統,1.25可以打印爲1.2或1.3。 – teppic