4
在我的程序這個片段:如何輸出精度足以顯示Debug和Release之間的算術差異的值?
trace.Log(
String.Format("a= {0:F10} b= {1:F10} a<b= {2}",
b.GetPixel(447, 517).GetBrightness(), (100F/255F),
b.GetPixel(447, 517).GetBrightness() < (100F/255F))
);
輸出這在調試模式:
a= 0.3921569000 b= 0.3921569000 a<b= False
但這種不同的結果在Release模式:
a= 0.3921569000 b= 0.3921569000 a<b= True
之前,我尋求一種方式來獲得兩種模式之間的一致算術,我可以使用什麼代碼來顯示變量中的隱藏精度,這些變量可能包含導致這種差異的變化?謝謝。
只是門票!非常感謝喬。 「R」確實揭示了上述F10的「000」位置的精確度。你能向我解釋爲什麼F10給出了明顯錯誤的結果? – ChrisJJ
假設你使用'double',實際上有15到16位的精度。用'f10',你明確地告訴它顯示十位小數。對於0.1到0.9之間的數字,這意味着只顯示10位精度。 –
喬,那個例子使用float不是double。我所問的假結果是F10的0.3921569000,與R的0.392156869相比。我說假,因爲F10對R顯示的所有數字都是足夠的,但F10的輸出被路由到兩位數。 – ChrisJJ