我有一个浮点值,我想显示它在格式字符串,如果它对应于一个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