當比較相等的雙精度時,我們需要給出一個容差級別,因爲浮點計算可能會引入錯誤。例如: double x;
double y;
x = f();
y = g();
if (fabs(x-y)<epsilon) {
// they are equal!
} else {
// they are not!
}
但是,如果我只是分配一個恆定值,沒有任何計算,我還需要檢查
我有一個在VB6中使用多年的DLL中的專有庫(我沒有代碼)。我試圖將VB6代碼升級到C#,並希望使C#代碼完全複製VB6行爲。我無法準確地在每個環境中調用DLL匹配時完成某些計算的雙精度結果。 在VB6我有這樣的事情(註文件讀寫是確保完全一樣的價值觀的使用和產生的): Dim a As Double, b As Double, c As Double, d As Double
Open "C:\
我有以下Python腳本: x = 300000000.0
while (x < x + x):
x = x + x
print "exec: " + str(x)
print "terminated" + str(x)
這個看似無限循環,終止很快,如果x是一個浮點數。但是,如果我將x改爲300000000,它會進入無限循環(在我的測試中運行時間超過一分鐘)。 我認爲這