将NSString转换为float会产生不精确的值

Jan*_*Jan 2 floating-point cocoa cocoa-touch numbers nsstring

我的视图中有两个文本字段.提示用户输入值后,我将它们转换为floats来进行计算.

我使用以下代码:

variable1 = [textField1.text floatValue];
variable2 = [textField2.text floatValue];`
Run Code Online (Sandbox Code Playgroud)

当用户输入22.8英寸时textField1,我得到22.80005英寸variable1.

我没有得到确切的价值!

如何获得精确的十进制值?任何添加都可能影响计算的准确性.

Ell*_*eal 6

关于浮点精度的另一个问题就是如此!

您应该使用NSDecimalNumber:

NSDecimalNumber *variable1 = [NSDecimalNumber decimalNumberWithString:[textField1 text]];
NSDecimalNumber *variable2 = [NSDecimalNumber decimalNumberWithString:[textField2 text]];
Run Code Online (Sandbox Code Playgroud)

" 数字和值编程指南"中有更多信息.