我有一個簡單的例程,該例程根據(jù)浮點值計算縱橫比。因此,對于值1.77777779,例程將返回字符串“ 16:9”。我已經(jīng)在我的機器上測試了它,并且工作正常。該例程為: 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; }現(xiàn)在在另一臺機器上,我得到了完全不同的結果。因此,在我的計算機上,1.77777779給出了“ 16:9”,但是在另一臺計算機上,我得到了“ 38:21”。
3 回答

侃侃爾雅
TA貢獻1801條經(jīng)驗 獲得超16個贊
除非確實需要,否則我不會使用浮點數(shù)。由于舍入錯誤,他們太容易出現(xiàn)這種情況。
您可以更改代碼以雙精度工作嗎?(小數(shù)點會導致過大的殺傷力)。如果這樣做,是否會給出更一致的結果?
至于為什么在不同的計算機上有所不同,那么兩臺計算機之間有什么區(qū)別?
32位和64位?
Windows 7 vs Vista vs XP?
英特爾與AMD處理器?(感謝Oded)
這樣的事情可能是原因。
- 3 回答
- 0 關注
- 938 瀏覽
添加回答
舉報
0/150
提交
取消