gpt4 book ai didi

NSNumber floatValue 不等于 NSNumber 值

转载 作者:行者123 更新时间:2023-12-02 00:40:16 26 4
gpt4 key购买 nike

第一次发帖。 NSNumber 的 floatValue 方法有问题——不知何故,它返回一个不精确的数字。问题在于:我将一堆 NSNumbers 存储在一个数组中,如下所示:

NSArray *a = [NSArray arrayWithObjects:
[NSNumber numberWithFloat:0.04f],
[NSNumber numberWithFloat:0.028f],
[NSNumber numberWithFloat:0.016f],
[NSNumber numberWithFloat:0.004f],
nil];

然后我尝试检索第一个值(例如):NSNumber n = (NSNumber) [a objectAtIndex:0];CGFloat f = [n floatValue];

在调试器中,n 显示值为 0.04(在摘要列中),但 f 显示值为 0.0399999991。我在这里做错了什么?

谢谢大家

最佳答案

你没有做错任何事。这也不是 NSNumberCGFloat 的问题。 float 非常普遍,它基于 2 的幂,而不是 10 的幂。你应该阅读 this definitive articleWikipedia article .

重点是,标准的 float 只能准确表示 1/2, 1/4, 1/8, ... 之和的数字。1/10 不是。因此,您无法使用标准 float 完全准确地表示 0.1。

如果您确实需要处理它,可以使用处理有理分数或十进制 float 的例程。

关于NSNumber floatValue 不等于 NSNumber 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2816212/

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