我有一个简单的例程,该例程根据浮点值计算纵横比。因此,对于值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条经验 获得超16个赞
除非确实需要,否则我不会使用浮点数。由于舍入错误,他们太容易出现这种情况。
您可以更改代码以双精度工作吗?(小数点会导致过大的杀伤力)。如果这样做,是否会给出更一致的结果?
至于为什么在不同的计算机上有所不同,那么两台计算机之间有什么区别?
32位和64位?
Windows 7 vs Vista vs XP?
英特尔与AMD处理器?(感谢Oded)
这样的事情可能是原因。
- 3 回答
- 0 关注
- 918 浏览
添加回答
举报
0/150
提交
取消