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

标签 cocoa cocoa-touch floating-point nsstring numbers

我的 View 中有两个文本字段。提示用户输入值后,我将它们转换为浮点型以进行计算。

我使用以下代码:

variable1 = [textField1.text floatValue];
variable2 = [textField2.text floatValue];`

当用户在 textField1 中输入 22.8 时,我在 variable1 中得到 22.80005。

我没有得到确切的值!

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

最佳答案

还有一个关于浮点精度的问题!

您应该使用NSDecimalNumber代替:

NSDecimalNumber *variable1 = [NSDecimalNumber decimalNumberWithString:[textField1 text]];
NSDecimalNumber *variable2 = [NSDecimalNumber decimalNumberWithString:[textField2 text]];

Number and Value Programming Guide. 中有更多信息

关于cocoa - 将 NSString 转换为 float 会产生不精确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9455001/

相关文章:

objective-c - 无法解密AES密文

macos - 如何在 espresso 代码编辑器中实现设置动画?

objective-c - 适用于 Mac 的类似 ShareKit 的框架

iphone - 用 quartz 绘制航向角 View

iphone - 如何使用 iPhone 追踪 friend 的行踪?

c++ - 启用浮点异常的浮点堆栈处理

cocoa - 当前收据无效或不匹配的 ds 人员 ID

iphone - 如何获得 UITableView 的可见矩形?

c - 如何在 C double 中表示无穷大?

c - sin(pi) 没有返回精确的零?