0
最近我一直在與System.Numerics.Complex
一起工作,並且我已經開始注意到存儲值的計算結果爲十分之一百萬分之一秒或其他類似的典型浮點「漂移」,這是衆所周知的常見現象與float
類型,甚至double
類型。我查看了Complex結構,果然,它使用了double
變量。爲什麼它使用double
值來存儲其數據而不是decimal
值,這些值旨在防止這種情況發生?我如何解決這個問題?爲什麼System.Numerics.Complex使用雙精度而不是小數?
'decimal'不旨在防止漂移。它旨在表示精確的十進制值。它使用128位的事實可能會使漂移更容易被你接受,但是額外的精度會帶來如此高的性能成本,設計者認爲多數情況可以通過基於double的Complex類型更好地服務。 – 2014-08-28 08:03:13
自然不會用10個手指計數,只有人類能做到。 – 2014-08-28 08:16:09
.NET的十進制也有一個相當小的指數(十進制,它被稱爲「比例」)範圍,或多或少在10^28和10^-28之間。 Double有更大的範圍。 – 2014-08-28 11:31:32