为了账号安全,请及时绑定邮箱和手机立即绑定

在Objective-C中出现浮动问题

在Objective-C中出现浮动问题

潇潇雨雨 2019-11-04 14:04:45
我有一个小问题,我找不到解决方案!我的代码是(这只是一个示例代码,但是我的原始代码做了这样的事情):float x = [@"2.45" floatValue];for(int i=0; i<100; i++)    x += 0.22;NSLog(@"%f", x);输出是52.450001而不是52.450000!我不知道,因为这会发生!谢谢你的帮助!〜解决了〜谢谢大家!是的,我已经解决了双重类型!
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

浮点数是具有一定精度的数字表示形式。并非每个值都可以用这种格式表示。也请参见这里。


您可以轻松想到为什么会这样:仅在间隔(1..1)中有无限数量的数字,但是浮点数仅具有有限的位数来表示(-MAXFLOAT .. MAXFLOAT)。


更恰当地说:在32位整数表示中,要表示的整数个数是可数的,但是有无限数量的实数值,不能在32位或64位的有限表示中完全表示。因此,不仅最高和最低可表示的实际值受到限制,而且准确性也受到限制。


那么,为什么浮点数后的数字很少会受到影响?因为表示形式是基于二进制而不是十进制,所以使其他数字比十进制数字更容易表示。


查看完整回答
反对 回复 2019-11-04
?
动漫人物

TA贡献1815条经验 获得超10个赞

浮点数不能始终由计算机轻松表示。这导致某些数字不准确。

就像我问你十进制的1/3是多少。无论您多么努力,您都无法告诉我它是什么,因为十进制无法准确地描述该数字。

浮点数无法准确描述一些十进制数字。


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 408 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信