6

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

问题:100,000 多个行星可以容纳很多人。不仅仅是 C#Decimal可以处理的。由于我正在用这些数字做平均值和其他东西,我需要能够处理浮点数(或者我只使用 BigInt 库)。

有谁知道我可以使用的 BigFloatingPoint 类(或其他)?谷歌今天非常无助。我可能会编写一个运行良好的类,但如果存在这样的东西,我宁愿使用预先存在的东西。

4

3 回答 3

12

使用百万人的单位来获得更多的净空。

此外,如果我的算术正确的话,十进制可以让你拥有 100,000 个行星,每个行星的人口是地球人口的 100000000000000 倍。你确定这还不够吗?

于 2009-01-07T19:29:50.093 回答
2

即使每个星球有1000亿人,总数也只有1E16。这完全在有符号 64 位整数的限制范围内(2^63 变为 9,223,372,036,854,775,807,几乎是 1E19...

你可以在每个星球上拥有 100 亿人,在接近极限之前拥有 100000 颗星球......

至于分数和平均值等,当您进行任何此类计算时,您不能转换为浮点数或双精度数吗?

于 2009-01-07T19:32:38.030 回答
1

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

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

于 2009-01-07T19:10:16.233 回答