非常非常大的C#浮点数

时间:2009-01-07 19:04:46

标签: c# math bigdecimal

我正在做一些人口建模(为了好玩,主要是为了使用承载能力和后勤功能的概念)。该模型适用于多个行星(目前约有100,000个行星)。当人口达到一个星球的承载能力时,居民开始分支到附近的行星,依此类推。

问题:超过10万颗行星可以容纳很多人。不仅仅是C#Decimal可以处理。由于我正在使用这些数字进行平均和其他工作,我需要能够使用浮点(或者我只使用BigInt库)。

有没有人知道我可以使用的BigFloatingPoint类(或其他什么)?谷歌今天非常无益。我可以编写一个可以运行得很好的类,但是如果存在这样的话,我宁愿使用预先存在的东西。

3 个答案:

答案 0 :(得分:11)

使用megapeople的单位来获得更多的空间。

此外,如果my arithmetic是正确的,则十进制可以让你拥有100,000个行星,每个行星拥有地球总数的100000000000000倍。你确定这还不够吗?

答案 1 :(得分:2)

即使每个星球上有1000亿人,但总数仍然只有1E16。这完全在有符号的64位整数的限制范围内(2 ^ 63到9,223,372,036,854,775,807,差不多是1E19 ...

在你接近极限之前,你可以在每个星球上拥有数百万人,拥有10万个行星......

对于分数和平均值等,当你进行任何这样的计算时,你不能转换成Float或double吗?

答案 2 :(得分:1)

你真的需要28位精度吗?你可以使用浮点进行一些计算吗?

(确切地说是双倍:±5.0e-324到±1.7e308)