我的问题是:
我有一个NSString包含“1.7”(例如),我必须得到浮点数= 1.7
我试过[mystring floatValue]
,但结果是1.700000000004576
如果我尝试“1.74”,结果是1.74000000000000000067484
我该怎么解决?
谢谢!
答案 0 :(得分:2)
您正确地将字符串转换为浮点数。问题是浮点数不能完全代表所有实数。直接分配:
float x = 1.7;
仍会出现精度错误。这就是浮点数的方式。
解决方法取决于您的需求。一些例子:如果你需要更高的数学计算精度,你可以使用双精度。如果您正在尝试为用户生成输出,则可以格式化输出,以限制小数点后显示的位数。如果您正在处理资金,您可以将浮点美元金额转换为整数美分,并使用整数执行所有计算,只显示输出给用户的小数点。
答案 1 :(得分:0)
Floats需要能够表示无限多个实数,但是float包含有限数量的位,因此浮点数是近似值。
有关详情,请参阅this article。
答案 2 :(得分:0)
解决! 我使用sqlite3_bind_text,即使我的数据库属性是FLOAT值,我使用mystring而不是myfloat,它工作正常!谢谢!
答案 3 :(得分:0)
您可以使用下面的格式修剪答案。 .1 会将结果设置为小数点后一位。
NSLog(@"mystring = %.1f ",[mystring floatValue]);