我有一個浮點值,我想顯示它在格式字符串,如果它對應於一個int,顯示整數,如果沒有,顯示它與一位小數。浮點不精確printf/appendFormat
像這樣:
3.1
3
2.9
2.8
現在我停留在概念,我會做這樣的事情:
float myFloat = 3.1
float mySecondFloat = 3
[NSString stringWithFormat:@"%g %g", myFloat, mySecondFloat];
我的問題是:
1 /格式「%g」在大多數情況下都適用,但有時我的結果顯示爲「0.600001」,而實際上應該有0.6,因爲我所做的只有0.7 - 0.1。
是否有一種類型的浮點數爲1的小數或可能是一個按位操作來擺脫最後的不精確或其他方式使它在100%的情況下工作?
謝謝您的回答。
你的「現實」不幸的是,它並不符合世界其他地方的現實,特別是與您計算機硬件的實際情況不符:-( – 2012-03-20 20:39:14
您所需的精度總是保持一位小數?如果是這樣,您最好將其存儲爲整數(比你希望的值大10倍),並且有一個打印功能,可以將小數點放在正確的位置,否則,你將遇到無法準確表示爲浮點數的問題(例如,'0.6'你的例子) – 2012-03-20 21:52:04
@KerrekSB你可以將我重定向到一篇文章解釋g爲我的計算機硬件的現實帶來了這個結果。我只是好奇它是如何在幕後工作的。 – moxy 2012-03-21 22:00:26