2012-09-25 45 views
3

我在SQL Server中運行返回一些計算值的函數。當使用dbFit在FitNesse中測試結果時,它聲稱這些值不相同(請參見下面的屏幕截圖)。即使實際和預期值相同,FitNesse值比較也會失敗

這些值以浮點形式返回,並且在比較所有小數時失敗 - 即使它只顯示兩個小數。有沒有辦法限制比較的小數位數範圍?

FitNesse values that are mismatched

+0

可能重複:http://stackoverflow.com/questions/10775173/float-value-in-slim-query-table-comparison –

回答

3

你永遠不應該比較花車,至少不嚴格。那是因爲二元系統的缺陷。

float a = 0.15 + 0.15 
float b = 0.1 + 0.2 
if(a == b) // can be false! 
if(a >= b) // can also be false! 

由於實數中的有效數字是有限的,我們不能完美地存儲實數。 Theres幾乎總是一個錯誤。嘗試寫在二進制0.1!我們在屏幕上看到的0.1是真的只是一個近似值。它是一個很大的主題,你可能想要進入數值分析的細節。

在更廣泛的筆記,你會發現一些信息在這裏:http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm

爲您的問題:

你應該使用〜=(約等於)。 你可以在這裏找到更多的信息:http://fitnesse.org/FitNesse.UserGuide.SliM.ValueComparisons

+0

是。約。如果您必須比較花車,相等比較標誌是一個不錯的選擇。 –

相關問題