gpt4 book ai didi

ios - 为什么 UITextfield.text 从数组中检索时返回精确的 float ?

转载 作者:可可西里 更新时间:2023-11-01 06:15:30 25 4
gpt4 key购买 nike

我有一个存储 textfield.text 输入的数组。然后我将文本作为 float 检索到其他地方。这似乎给了我文本字段中的“确切数字”。

例子A

   navtestAppDelegate *appDelegate = 
(navtestAppDelegate *)[[UIApplication
sharedApplication] delegate];

NSMutableArray *storedData =
appDelegate.myData;

[storedData replaceObjectAtIndex: myIndex withObject: mytextfield.text];

float number = [[storedData objectAtIndex:myIndex] floatValue];

如果 mytextfield.text 输入是 22.8 float 返回 22.8

但是,

示例 B

[storedData replaceObjectAtIndex: myIndex withObject: @"22.8”];

float number = [[storedData objectAtIndex:myIndex] floatValue];

float 返回 22.7999999

我不明白为什么我得到示例 A 中的确切数字

最佳答案

值 22.8 不能精确地用二进制 float 表示。您看到的是基于显示格式的表示。不同的显示方法可能使用不同的显示格式。显示位数和四舍五入不同意味着 22.8 和 22.7999999 对于四舍五入后显示的位数都是正确的。请注意,显示的是 22.7999999 而不是 22.8000000,因为下一位是 2,所以显示的值是向下舍入的。

这是依赖于基数的,也就是说,在一个基数中可以准确的东西在不同的基数中可能不准确。在这种情况下,十进制数中的22.8不能精确到二进制数中。

这就是 NSDecimal 存在的原因,也是 float 不用于货币值的原因。

这有点等同于以小数为基数显示 pi 的值,位数是无限的,因此对于每次显示,有人决定要显示多少位数。有趣的是,pi 可以在 pi 数基中准确(但有用)表示。 :-)

floatdouble 的情况下,可以表示的数字数量是有限的。

关于ios - 为什么 UITextfield.text 从数组中检索时返回精确的 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19825257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com