如何在objective-c中的float值中转换UTF8字符串

时间:2010-12-01 17:18:19

标签: objective-c ios4 nsstring floating-point

我的问题是: 我有一个NSString包含“1.7”(例如),我必须得到浮点数= 1.7 我试过[mystring floatValue],但结果是1.700000000004576 如果我尝试“1.74”,结果是1.74000000000000000067484 我该怎么解决? 谢谢!

4 个答案:

答案 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]);