簡體   English   中英

存儲大量數字的好方法是什么? (例如572e6561)在C#中

[英]What's a good way to store extremely large numbers? (Eg. 572e6561) in C#

我的第一個想法是實現一個將系數存儲為雙精度值並將10 ^ X存儲為int / short的類。

我想使用工程表示法而不是科學表示法,因為對於最終用戶而言,它更簡單。

如果有用於執行此操作的項目,我似乎找不到它們。

我知道System.Numerics.BigInteger存在,但是速度很慢。 我真的想在移動設備上執行許多計算時要有很高的速度。 我只想將數字存儲為工程符號。

有任何想法嗎?

如果您不需要很高的精度(僅大幅度),那么我想說兩個值代表尾數和指數。 兩者都使用整數將更接近於內部如何處理浮點數。 但是,至少對尾數使用浮點數可能會使得更容易實現許多操作,但要花費一些尾數精度。

C具有frexpldexp之類的功能 ,可分別處理尾數和浮點數的指數。 我不知道任何C#或.NET,但也許那里也有類似的功能。

如果您也對指數使用double,那么從理論上講您將是一個很大的數字。 但是,如果由於舍入而導致該指數不精確,那么您根本就不會知道該指數,這會使尾數一文不值。 因此,如果您需要足夠大的數字來考慮這樣的事情,則要么需要對指數使用某個大整數,要么可以完全舍棄尾數,然后將這些大數字表示為具有近似指數的2的冪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM