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. 爲什麼EasyMock測試失敗?
- 2. 單元測試失敗 - 爲什麼?
- 3. 爲什麼這個Mockito測試失敗?
- 4. 爲什麼這個MockMvc測試失敗?
- 5. 爲什麼此CollectionAssert.AreEquivalent()測試失敗?
- 6. 工作爲什麼測試失敗
- 7. 爲什麼我的rspec測試失敗?
- 8. 爲什麼QUnit RegExp測試失敗?
- 9. 爲什麼此測試失敗?
- 10. 爲什麼測試方法失敗?
- 11. 旋轉點測試失敗。爲什麼?
- 12. 爲什麼java併發測試失敗?
- 13. 爲什麼我的酶測試失敗?
- 14. 爲什麼這個JMock測試失敗?
- 15. 爲什麼我的測試失敗
- 16. Test :: Builder :: Tester失敗測試失敗,爲什麼?
- 17. 爲什麼使用mox失敗的測試失敗了其他測試?
- 18. 測試python-glanceclients時爲什麼測試失敗?
- 19. 爲什麼功能測試失敗?運行rake測試時,
- 20. 燒瓶測試 - 爲什麼測試確實失敗
- 21. Junit測試:什麼是失敗?
- 22. TFS:創建單獨的錯誤項時的xUnit測試失敗
- 23. 爲什麼xunit不允許測試帶參數的方法?
- 24. 爲什麼xUnit無法找到我的DNX測試?
- 25. 爲什麼ReSharper本身不支持Xunit與測試運行器?
- 26. 爲什麼這個JUnit測試用例失敗?
- 27. 爲什麼pasring CSS失敗,如何測試瀏覽器
- 28. 爲什麼多個GET請求失敗量角器測試?
- 29. 爲什麼這個「對於類型測試模式」失敗?
- 30. 困惑,爲什麼在5.3節測試應該失敗
Table.Convert的代碼在哪裏?什麼是數據類型?你可能使用Double或Float,因爲平等是棘手的。 – JasonTrue 2010-08-27 15:20:29
好點。增加了計算,這也失敗了。我使用'雙'。 – randomguy 2010-08-27 15:24:28