在.Net中進行科學計算時最常用的數據類型是什麼?它是浮動的,雙重的還是其他的東西?.Net中科學計算的推薦數據類型是什麼?
回答
科學價值觀往往是「自然」的值(長度,質量,時間等),其中有不精確的自然度入手 - 但是,你可能想非常,非常大或非常,非常小的數字。對於這些值,double
通常是一個好主意。它速度很快(幾乎可以在任何地方使用硬件支持),可以上下擴展到巨大/微小的值,如果你不關心精確的decimal
值,通常可以正常工作。
decimal
對於「人造」數字來說是一個很好的類型,其中有一個確切的數值,幾乎總是自然地表示爲小數 - 這是貨幣的典型例子。然而,在存儲方面(每個值8個字節而不是4個),它的價格是double
的兩倍,具有更小的範圍(由於指數範圍更有限),並且由於缺少硬件支持而顯着更慢。
如果存儲是一個問題,我個人只會使用float
- 當您只有7個重要的小數位時,不準確的速度多快會令人驚訝。
最終,從評論「熊會吃了你」所暗示的,它取決於你在談論什麼樣的價值觀 - 當然,你打算跟他們做什麼。沒有任何進一步的信息,我懷疑double
是一個很好的起點 - 但你應該根據個人情況做出真正的決定。
我喜歡「自然」與「人造」的區別。 – 2010-08-02 14:49:10
Double
似乎是這樣操作的最可靠的數據類型。即使WPF廣泛使用它。
嗯,當然,術語「科學計算」是一個有點模糊,但總的來說,它的double
。
float
在很大程度上是用於與期望的32位浮點數庫的兼容性。 float
和double
操作(如加法)的性能完全相同,所以新代碼應始終使用double
,因爲它具有更高的精度。
但是,x86 JITter絕不會內聯使用或返回float
的函數,因此在方法中使用float
實際上可能會更慢。再一次,這是爲了兼容性:如果內聯,執行引擎會跳過轉換步驟,降低其精度,因此,如果JITter內聯這些函數,它可能會不經意地更改某些計算的結果。最後,還有decimal
。只要重要的是有一定的小數位數就可以使用它。定型用例是貨幣操作,但它當然支持2位以上的小數位 - 它實際上是一個80位的數據。
如果即使64位double
的準確度還不夠,請考慮使用外部庫來獲取任意精度數字,但當然如果您的特定科學用例特別要求它,那麼您只需要這樣做。
注意小數昂貴得多比花車/雙打使用(除了什麼喬恩斯基特和Timwi寫)。
我會建議雙倍,除非你需要的值是確切的;十進制用於需要這種精確度的財務計算。科學計算可以容忍小錯誤,因爲無論如何您都無法準確測量1米。如果存儲是一個問題(即巨大的矩陣),浮點只會有幫助。
- 1. 計算機科學數學
- 2. 什麼是計算機科學背景下的超函數?
- 3. 計算機科學分類
- 4. 計算機科學與信息科學有什麼區別?
- 5. 網頁計算機科學中的MAP是什麼?
- 6. 計算機科學中複用術語的含義是什麼?
- 7. 運輸機器學習模型的推薦方法是什麼?
- 8. 在計算機科學中,什麼是浮點?
- 9. 在數學科學中講計算機科學
- 10. 什麼是一些好的計算機科學/編程期刊?
- 11. 計算機科學
- 12. 科學計算器
- 13. 什麼是一個小型科學計算集羣的最佳軟件棧
- 14. 通過類變量暴露數據的推薦'設計模式'是什麼?
- 15. 接下來要學什麼? - 計算機科學
- 16. 在java中計算科學數字
- 17. 什麼是opencv_traincascade的推薦參數?
- 18. 什麼數據類型應該用於貨幣計算類型
- 19. 你推薦什麼.NET庫/ wrapper來嗅探數據包?
- 20. 什麼是與計算機科學相關的非理性數字?
- 21. 擴增在計算機科學中意味着什麼?
- 22. android中推薦的ocr庫是什麼?
- 23. Rapidminer中的深度學習算法的類型是什麼?
- 24. 學習C++,下一步是什麼?另外推薦的編譯器是什麼?
- 25. 科學計算中的網格數據的內存佈局
- 26. Java科學計算器
- 27. 計算機科學老人
- 28. Android科學計算器
- 29. 計算機科學界?
- 30. 什麼是SSIS的推薦學習材料?
你在計算什麼?我認爲這完全取決於你正在使用的數據,你在做什麼以及你的需求。 – 2010-08-02 14:36:04