是對C#小數類型的任何更容易上班,我們會直覺地想到比其他浮點類型的相等比較?C#小數類型平等
C#小數類型平等
回答
我想這取決於你的直覺。我假設有些人會想到將1除以3作爲分數1/3的結果,而其他人會認爲更多地沿着「哦,1除以3不能用十進制數表示,必須決定保留多少位數字,讓我們以0.333爲單位「。
如果您以前一種方式思考,Decimal
對您沒有多大幫助,但如果您以後一種方式思考,並在需要時明確四捨五入,則更有可能是「直覺上」沒有主題的操作以十進制舍入誤差,例如除以10,將表現得如你所料。對於大多數人來說,這比二進制浮點類型的行爲更直觀,其中2的冪運行得很好,但是10的冪沒有。
基本上沒有。所述Decimal
類型簡單地表示一個專門的排序,其被設計來減少舍入誤差特別是在底座10系統浮點數的。也就是說,Decimal
的內部表示實際上是以10爲底(denary),而不是通常的二進制。因此,這對於貨幣計算來說是一種更合適的類型 - 儘管當然不限於這種應用。
從MSDN page爲以下結構:
十進制值類型表示十進制數範圍從正到79,228,162,514,264,337,593,543,950,335負79,228,162,514,264,337,593,543,950,335。十進制值類型適用於需要大量重要整數和小數位並且沒有舍入誤差的財務計算。十進制類型並不排除舍入的需要。相反,它最大限度地減少了四捨五入造成的錯誤。例如,下面的代碼產生0.9999999999999999999999999999而不是1的結果。
十進制數是一個浮點值,它包含一個符號,一個數值(其中值中的每個數字位於0到9之間)以及一個縮放因子,用於指示分隔數字值的整數部分和小數部分的浮點小數點的位置。
Ahem。爲什麼?這個答案完全正確,謝謝。 – Noldorin
- 1. 代數數據類型和平等
- 2. 匿名類型的平等
- 3. 類型平等檢查
- 4. 平等感性類型
- 5. C++中等效數據類型的C#
- 6. 長型平等
- 7. C# - 類型大小
- 8. LPCSTR數據類型等同於C#
- 9. LLVM-C類型等於
- 10. scala更高類型和scalatic平等
- 11. 動態平等類型的對象
- 12. MethodInfo聲明類型的平等
- 13. 平等參數類型可變參數模板功能
- 14. 斯卡拉類型平等和路徑依賴的類型
- 15. 平均小型
- 16. C#.NET類型多點小數?
- 17. C++對象平等
- 18. C#平等檢查
- 19. 小學C++類型混淆
- 20. 參數化類型和平等哈斯克爾
- 21. 針對不同數值公差的不同平等[DenseVector]類型
- 22. 將c#數據類型轉換爲等效的java數據類型
- 23. 「Handle」數據類型等效
- 24. 數據類平等科特林
- 25. C++原子與非平凡類型?
- 26. 的typedef C和類型等價
- 27. C#.NET異步等待返回類型
- 28. C#列表的COM等效類型
- 29. C中有結構等價類型嗎?
- 30. C#數學類型的數學類型?
-1因爲這不是真的回答這個問題,除了重新提供我以前的答案。 – Noldorin
@Noldorin - 我不同意這是一個重複,因爲你的回答不包括二進制算術對大多數人來說不直觀的問題。另外,我不同意你回答「否」,認爲平等問題更有可能按預期工作。不要說使用平等是一個好主意,但看看例如由於數字類型爲二進制而導致問題的各種網站上的困惑Javascript用戶的數量 –
與直觀無關......這僅僅是內部表示和完成方式,我將從MSDN中討論並引用。咩。 – Noldorin