Assert.Equal(1000000.0, table.Convert("g", "mcg", 1.0)); // Pass
Assert.Equal(2000000.0, table.Convert("g", "mcg", 2.0)); // Pass
Assert.Equal(3200000.0, table.Convert("g", "mcg", 3.2)); // Fail
// The failing one is equal to doing the following calculation, which fails also:
Assert.Equal(3200000.0, 3.2 * 1.0/(1.0/1000000.0)); // Fail
Assert.Equal(3200000.0, 3.2 * (1.0/(1.0/1000000.0)));// Pass, WTF?!?!
===================================================================
Assert.Equal() Failure
Expected: 3200000
Actual: 3200000
1
A
回答
1
隨着操作順序的不同,浮點二進制舍入錯誤似乎以不同方式傳播。您可以得到「不太令人驚訝」的結果,但十進制類型的結果可能會較慢。
3.2 * 1.0 /(1.0/1000000.0) - > 3200000.0000000005
(試行(3.2 * 1.0/(1.0/1000000.0)).ToString("R");
3.2 *(1.0 /(1.0/1000000.0)) - > 3200000.0
如果你不這樣做已經明白浮點和十進制類型之間的差異,請閱讀:http://docs.sun.com/source/806-3568/ncg_goldberg.html
或者,如果你在青白英語喜歡的東西: http://floating-point-gui.de/
0
Yoe無法從您的代碼片段中看到它,但我確信它與您的第一行(傳遞的行)有.0
這一事實有關,而失敗的行有一些事情逗號後不等於零。
我敢肯定有一些奇怪的東西像3.2000000001
來某處。也許從數據庫?
HTH!
Thomas
相關問題
- 1. 單元測試失敗 - 爲什麼?
- 2. 爲什麼我的rspec測試失敗?
- 3. 爲什麼EasyMock測試失敗?
- 4. 爲什麼java併發測試失敗?
- 5. 爲什麼QUnit RegExp測試失敗?
- 6. 爲什麼我的測試失敗
- 7. 爲什麼我的酶測試失敗?
- 8. 爲什麼這個Mockito測試失敗?
- 9. 工作爲什麼測試失敗
- 10. 旋轉點測試失敗。爲什麼?
- 11. 爲什麼這個MockMvc測試失敗?
- 12. 爲什麼此測試失敗?
- 13. Test :: Builder :: Tester失敗測試失敗,爲什麼?
- 14. 燒瓶測試 - 爲什麼測試確實失敗
- 15. TFS:創建單獨的錯誤項時的xUnit測試失敗
- 16. 爲什麼ReSharper本身不支持Xunit與測試運行器?
- 17. 爲什麼xunit不允許測試帶參數的方法?
- 18. 爲什麼這個功能測試會失敗?
- 19. 爲什麼我的測試「propType == typeof(ObservableCollection <string>)」失敗?
- 20. 爲什麼我在java中的布爾測試總是失敗?
- 21. 爲什麼此控制器測試創建操作失敗?
- 22. 爲什麼大型Android活動單元測試失敗?
- 23. 爲什麼測試條件渲染不會失敗?
- 24. 爲什麼空字符串測試失敗?
- 25. 爲什麼春季測試失敗,不起作用@MockBean
- 26. 爲什麼python鼻子單元測試拆卸夾具失敗
- 27. 爲什麼我的Paperclip validates_attachment_presence測試失敗?
- 28. Python:爲什麼此文檔測試失敗?
- 29. 爲什麼遷移測試失敗,但不遷移?
- 30. 啓用覆蓋時,爲什麼Android Instrumentation測試報告失敗?
Table.Convert的代碼在哪裏?什麼是數據類型?你可能使用Double或Float,因爲平等是棘手的。 – JasonTrue 2010-08-27 15:20:29
好點。增加了計算,這也失敗了。我使用'雙'。 – randomguy 2010-08-27 15:24:28