繁体   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