gpt4 book ai didi

objective-c - cocoa touch 。为什么 NSNumber 返回 intValue 和 floatValue 的差值?

转载 作者:行者123 更新时间:2023-12-02 21:50:37 26 4
gpt4 key购买 nike

好吧,这完全没有意义:

我创建一个 NSNumber:

NSNumber *n = [NSNumber numberWithInt:37669178];  

然后我将值作为整数和 float 回显:

int i = [n intValue];  
float f = [n floatValue];

以下是它们的值:

int: 37669178  
float: 37669176.000000

哈!?!?!

有人可以向我解释一下为什么会发生这种情况以及如何解决它。这肯定不是精度问题。 37,669,178 完全在 float 的精度范围内。

谢谢,
道格

更新

好吧,现在我完全困惑了。引用math.h

#define MAXFLOAT    ((float)3.40282346638528860e+38)

整数值 37669178 为 3.7669178e+7,完全在允许的最大浮点值之内。因此,[n floatValue] 应该返回 37669178.0 而不是 37669176.0

我在这里缺少什么?

最佳答案

float 只有 23 位精度(不要与范围混淆),大约是 7 位有效十进制数字。如果您需要比这更高的精度,请使用double

What Every Programmer Should Know About Floating Point

关于objective-c - cocoa touch 。为什么 NSNumber 返回 intValue 和 floatValue 的差值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2420776/

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