非常非常大的C#浮点数

非常非常大的C#浮点数,c#,math,bigdecimal,C#,Math,Bigdecimal,我正在做一些人口建模(为了好玩,主要是为了玩承载能力和物流功能的概念)。该模型适用于多颗行星(目前约有100000颗)。当一颗行星上的人口达到承载能力时,居民开始向附近的行星转移,以此类推 问题:100000多颗行星可以容纳很多人。一个C#十进制数所能处理的数据超过了这个数。因为我在用这些数字做平均值和其他东西,所以我需要处理浮点的能力(或者我只需要使用一个BigInt库) 有人知道我可以使用BigFloatingPoint类(或其他什么)吗?谷歌今天毫无用处。我可能可以编写一个足够好的类,但如

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

问题:100000多颗行星可以容纳很多人。一个C#
十进制数
所能处理的数据超过了这个数。因为我在用这些数字做平均值和其他东西,所以我需要处理浮点的能力(或者我只需要使用一个BigInt库)


有人知道我可以使用BigFloatingPoint类(或其他什么)吗?谷歌今天毫无用处。我可能可以编写一个足够好的类,但如果存在这样的东西,我宁愿使用预先存在的东西。

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


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

使用兆人单位来获得更大的净空


此外,如果正确的话,十进制可以让你有100000个行星,每个行星的人口是地球的10000000000000倍。你确定这还不够吗?

即使每个星球都有1000亿人口,总数仍然只有1E16。这完全在有符号64位整数的限制范围内(2^63到9223372036854775807,几乎等于1E19

在你接近极限之前,每颗行星上有一百万十亿人,十万颗行星


至于分数和平均数之类的,当你做任何这样的计算时,你不能转换成浮点数或双精度吗?

你是正确的。我是在假设十进制是64位数据类型的情况下工作的。现在我更仔细地看它,我看到它是128位的,而且足够大了。