0
A
回答
2
您應該使用decimal
類型或更好,money
類型,這是特別適合這些需求。
您不應該使用float
,因爲float是十進制值的近似表示形式。 參見MSDN文檔,爲什麼我們不應該使用float
here
float和real數據類型被稱爲近似數據類型。 float和real的行爲遵循關於近似數值數據類型的IEEE 754規範。 近似數字數據類型不存儲爲許多數字指定的確切值;他們存儲了一個非常接近的值。對於許多應用來說,指定值和存儲的近似值之間的微小差異並不明顯。有時候,差異變得明顯。
因爲float和實際數據類型的近似性,當需要精確數字行爲,如在財務應用程序,在涉及舍入,或相等檢查操作不使用這些數據類型。相反,使用整數,小數,金錢或smallmoney數據類型。
1
決定是否要使用二進制小數或十進制小數的主要問題不是準確性,真的。這是「我如何期待計算進行」。
您從decimal
獲得的主要內容是您可以在紙張上用定點數字計算的東西。例如: -
13.22
+ 7.3
-----
20.52
這不是真的decimal
比float
更精確的(儘管它可以是爲好,對於某些應用)。問題在於它會在紙面上犯同樣的錯誤 - 這是十進制的十進制數字,而不是二進制。
還是以另一種思路,你的投入肯定是小數十進制數(通常,在一個字符串或此類)。所以如果你使用浮點數,你會得到十進制 - >二進制 - >計算 - >小數。二進制到十進制表示沒有信息丟失(和有限的二進制數可以在有限的十進制數精確表示),但解決這個問題的另一種方法是不正確的 - 甚至像0.1
在二進制小數沒有有限表示(就像1/3
沒有十進制小數的有限表示,但在基數6中工作正常)。
相關問題
- 1. 只需要2小數點
- 2. 只有在需要時浮點數的Jython小數位數
- 3. 如何精確打印浮點數或雙精度型變量的小數位數至100位?
- 4. 浮點數據類型的15位數字的精確度是什麼意思?
- 5. 比較樓層/小區後的浮點數/雙精度比較
- 6. 將小數位數多的浮點數轉換爲浮點數只有一個小數位的浮點數
- 7. 精確地將浮點數/小數點精確到小數點後3位?
- 8. 雙精度浮點數和其他浮點數精度
- 9. 浮點數/雙精度浮點數的小範圍,適用於整型(C++,VS2010)
- 10. OpenCL中最小/最大浮點數或雙精度常數
- 11. 解析數字精確到小數點後兩位,輸出類型爲數字或浮點數在javascript中
- 12. 如何在小數點後返回2位數的浮點數?
- 13. 以32位精度浮點實數
- 14. 如何比較浮點數或雙精度?
- 15. 檢查數字是否精確浮點數(int)或實際浮點數
- 16. 如何獲得1個或2位小數在Java中與浮點數據類型
- 17. 高精度打印結果(浮點數)
- 18. 如果我只需要1個物業(目前),我是否需要一個類?
- 19. 小數位數浮點數
- 20. 雙精度和單精度浮點數?
- 21. Octave數據類型 - 浮點數和雙精度
- 22. 如何判斷雙精度浮點數是否可以安全地存儲爲單精度浮點數?
- 23. 標準雙精度IEEE浮點數有多少位的精度?
- 24. 精確到浮點小數?
- 25. C++如何設置浮點數的固定小數精度
- 26. 如何獲得浮點數的小數精度?
- 27. 增加浮點數精度
- 28. 如果浮點顯示小數點2位,並且顯示小數點0位,如果int
- 29. 如何回顯一個變量是雙精度的,但只顯示小數位,如果需要的話?
- 30. WebGL:OES_texture_float是否需要存儲爲32位浮點數?某些設備似乎只存儲爲半浮點數
工資 - 使用'DECIMAL/NUMERIC/MONEY'這是準確的數據類型,或者你會問像像http://stackoverflow.com/questions/35885812/mssql-decimal-sum-and-float-sum-difference – lad2025
可能重複的[數值,浮點數和小數在sql服務器之間的差異](http://stackoverflow.com/questions/1056323/difference-between-numeric-float-and-decimal-in-sql-server) –