【问题标题】:Very, very large C# floating-point numbers非常非常大的 C# 浮点数
【发布时间】:2009-01-07 19:04:45
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# math bigdecimal


    【解决方案1】:

    使用大人物的单位来获得更多的空间。

    此外,如果my arithmetic 是正确的,Decimal 可以让您拥有 100,000 个行星,每个行星的人口数量是地球人口的 100000000000000 倍。你确定这还不够吗?

    【讨论】:

    • 你是对的。我在假设 Decimal 是 64 位数据类型的情况下工作。现在我更仔细地观察它,我发现它是 128 位的,而且足够大。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多