Dot-Net

.NET 中十進制、浮點和雙精度的區別?

  • March 6, 2009

.NET和.NETdecimal中有什麼區別?float``double

什麼時候有人會使用其中之一?

float並且double浮點二進制點類型。換句話說,它們代表這樣的數字:

10001.10010110011

二進制數和二進制點的位置都在值內編碼。

decimal浮點數類型_ 換句話說,它們代表這樣的數字:

12345.65789

同樣,數字和小數點的位置都在值內編碼——這就是decimal仍然是浮點類型而不是定點類型的原因。

需要注意的重要一點是,人類習慣於以十進制形式表示非整數,並期望以十進製表示的精確結果;並非所有十進制數都可以用二進制浮點數精確表示——例如 0.1——因此,如果您使用二進制浮點值,您實際上會得到 0.1 的近似值。當使用浮點小數點時,您仍然會得到近似值——例如,無法精確表示 1 除以 3 的結果。

至於什麼時候用:

  • 對於“自然精確小數”的值,最好使用decimal. 這通常適用於人類發明的任何概念:財務價值是最明顯的例子,但也有其他例子。例如,考慮給潛水員或溜冰者的分數。
  • 對於更多的自然產物,無論如何都無法準確測量的值*,*float /double更合適。例如,科學數據通常會以這種形式表示。在這裡,原始值一開始就不是“十進制精度”,因此保持“十進制精度”對於預期結果並不重要。浮點二進制點類型比小數要快得多。

引用自:https://stackoverflow.com/questions/618535