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

为什么此浮点计算在不同的计算机上给出不同的结果?

为什么此浮点计算在不同的计算机上给出不同的结果?

C#
慕慕森 2019-10-21 15:20:15
我有一个简单的例程,该例程根据浮点值计算纵横比。因此,对于值1.77777779,例程将返回字符串“ 16:9”。我已经在我的机器上测试了它,并且工作正常。该例程为:    public string AspectRatioAsString(float f)    {        bool carryon = true;        int index = 0;        double roundedUpValue = 0;        while (carryon)        {            index++;            float upper = index * f;            roundedUpValue = Math.Ceiling(upper);            if (roundedUpValue - upper <= (double)0.1 || index > 20)            {                carryon = false;            }        }        return roundedUpValue + ":" + index;    }现在在另一台机器上,我得到了完全不同的结果。因此,在我的计算机上,1.77777779给出了“ 16:9”,但是在另一台计算机上,我得到了“ 38:21”。
查看完整描述

3 回答

?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

除非确实需要,否则我不会使用浮点数。由于舍入错误,他们太容易出现这种情况。

您可以更改代码以双精度工作吗?(小数点会导致过大的杀伤力)。如果这样做,是否会给出更一致的结果?

至于为什么在不同的计算机上有所不同,那么两台计算机之间有什么区别?

  • 32位和64位?

  • Windows 7 vs Vista vs XP?

  • 英特尔与AMD处理器?(感谢Oded)

这样的事情可能是原因。


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 857 浏览

添加回答

举报

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