有人告訴我,decimal是作爲用戶定義的類型實現的,而像int這樣的其他c#類型具有專用於它們的特定操作碼。這背後的理由是什麼?爲什麼c#中的小數與其他c#類型不一樣?
8
A
回答
11
decimal
在這裏並不孤單; DateTime
,TimeSpan
,Guid
等也是自定義類型。我猜主要的原因是他們沒有映射到CPU的主要部分。 float
(IEEE 754),int
等在這裏非常普遍,但是decimal
被定製爲.NET。
如果你想通過反射直接與操作符交談(因爲它們不存在int等),這隻會導致問題。我想不出其他場合你會注意到其中的差異。
(實際上,仍有結構等來表示人 - 他們只是最缺乏的,你可能會想到什麼是在他們,如運營商)
6
「什麼是這背後的原因?」
十進制數學是在軟件和硬件之間進行處理的。目前,許多處理器不支持本地小數(金融十進制與浮點數)數學。隨着IEEE 754R的採用,這種情況正在發生變化。
參見:
相關問題
- 1. 爲什麼CAP中的C和ACID中的C不一樣?
- 2. 爲什麼Simulink c函數中的數據類型與正常的c數據類型不同
- 3. 爲什麼泛型類型的實例類與泛型類不一樣?
- 4. C++從其他類型
- 5. C++中的其他類中的類類型數組
- 6. 爲什麼C++不知道TIMESTAMP_STRUCT類型?
- 7. 目標C:與其他類
- 8. 違反C++中的類型安全與其他類型的函數聲明?
- 9. 爲什麼C類型的泛型表達式不能與C++兼容?
- 10. 將sqlite3_column_value轉換爲Objective C中的其他數據類型
- 11. 什麼樣的數據類型將在C++中保存3000000^2?
- 12. 爲什麼不能拒絕小數? (C++)
- 13. C:數據類型。 sqrt函數與int工作爲什麼?
- 14. 爲什麼Erlang和其他函數編程語言不是原生的c/C++?
- 15. 爲什麼C++中空類的大小不爲零?
- 16. 爲什麼創建基於其他類型的去類型?
- 17. 爲什麼C#不支持類構造函數中的隱含泛型類型?
- 18. 爲什麼我不需要在C#中指定類型參數?
- 19. C#中的Unicode類名 - 爲什麼有些工作,而其他人不工作?
- 20. 爲什麼汽車類型不能與其他內置的共存,在下面的代碼for語句C++
- 21. 爲什麼同樣的msdn C#示例程序輸出與我的不一樣?
- 22. 是什麼類型的解引用一個迭代的地圖或其他一些複合類型的C++
- 23. C++ ::與所有其他類共享類
- 24. 與其他類型
- 25. 爲什麼我們在C/C++中有兩種類型的庫?
- 26. 爲什麼我可以轉換爲這種類型而不是其他類型?
- 27. 爲什麼C隱式轉換像他們一樣操作?
- 28. 什麼是單播DNS?它與其他類型的DNS有什麼不同?
- 29. WINOLEAPI的C#數據類型是什麼?
- 30. C++ - 爲什麼我的cout代碼顯示小數不一致?
我認爲這一點是十進制的是它得到了自己的關鍵字在C#中,但不及時治療的唯一類型特別是由CLR。 – 2008-12-04 06:27:39