标签: c# math numbers
我的第一个想法是实现一个将系数存储为double的类,将10 ^ X存储为int / short。
我想使用工程符号而非科学符号,因为它对最终用户来说更简单。
如果有这样做的项目,我似乎无法找到它们。
我知道System.Numerics.BigInteger存在,但它很慢。我真的希望高速在移动设备上执行许多计算。 我只想将数字存储为工程符号。
System.Numerics.BigInteger
有什么想法吗?
答案 0 :(得分:0)
如果你不需要很多精确度,只需要很大的精度,那么我会说使用两个值来表示尾数和指数。对两者使用整数将更接近内部如何处理浮点数。但是至少在尾数中使用浮点可能会更容易实现许多操作,代价是几位尾数精度。
C具有frexp和ldexp等函数来分别处理浮点数的尾数和指数。我不知道任何C#或.NET,但也可能有相似的功能。
如果你也使用双倍作为指数,你理论上真的大数字。但是如果那个指数不精确,由于四舍五入,那么你根本就不知道指数,这使得尾数毫无价值。因此,如果你需要足够大的数字来考虑这些事情,你需要为指数使用一些大整数,或者可以完全丢弃尾数,并将这些大数字表示为具有近似指数的2的幂。