【问题标题】:.NET Framework Library for arbitrary digit precision用于任意数字精度的 .NET Framework 库
【发布时间】:2009-07-23 04:55:59
【问题描述】:

我正在重新提出这个问题,并使其更加具体:是否有支持任意精度数字的 .NET 框架库?

【问题讨论】:

  • 您正在寻找的是“任意精度”十进制库,或者可能是“bignum”类型库。我个人没有在.net 中使用过任何此类库,但也许这个问题会有所帮助。 stackoverflow.com/questions/621684/…

标签: .net precision


【解决方案1】:

您可以等待 .NET 4.0 吗?他们是bringing BigInteger directly into the Framework

另一方面,如果你等不及了,那么J# runtime includes built-in support for java.math.BigInteger and BigDecimal。就像 .NET Framework 的其余部分一样,它是可再分发的。

【讨论】:

  • 这里有一些 BigInteger 选项:stackoverflow.com/questions/25375/…
  • 不幸的是,这些是任意大小的整数,而不是任意精度的自然数。
  • 在这种情况下看这些:J# library's java.math.BigDecimal
【解决方案2】:

这里有几个选项。

W3b.Sine 是一个不错的选择,它是原生 C#/.NET,支持任意精度浮点值。

如果您只处理整数值,IntX 提供对任意精度整数值的支持。一个可能更成熟的选项是 C# BigInt,但同样,它不支持浮点运算。

【讨论】:

    【解决方案3】:

    您可以尝试使用尾数的旧方法。基本上你可以有一个 64 位整数来存储数字,然后是一个 64 位整数来存储指数(可能是负数)。您可以构建自己的对象类型并重载算术运算符,因此它将被视为单个数字。这需要一些工作,但我认为这将是您的最佳选择。

    【讨论】:

    【解决方案4】:

    GnuMpDotNet:http://www.emilstefanov.net/Projects/GnuMpDotNet/

    如果您需要纯 .NET,请考虑查看以下内容:http://www.codeplex.com/IntX/

    【讨论】:

    • 这两个都涵盖任意大小的整数类,但它们是否提供任意精度的自然数?
    • 自然数是一个非负整数。所以,他们做到了。 en.wikipedia.org/wiki/Natural_number
    • 好的,让我换个说法。任意精度的十进制数?
    【解决方案5】:

    也许令人惊讶的是,Bailey-Borwein-Plouffe formula 提供了一个增量过程来计算 pi 的下一个二进制或十六进制数字,而无需存储所有先前的数字。

    【讨论】:

    • 当问题询问如何在 C# 中计算任意多位 pi 时,提问者在几个月后将其更改为“更具体”但实际上只是相切相关的东西。
    【解决方案6】:

    如果你想要一个非常快的库,那么试试:

    http://www.emilstefanov.net/Projects/GnuMpDotNet/

    【讨论】:

      【解决方案7】:

      您可以使用十进制类型,它为您提供 28-29 位有效数字

      【讨论】:

      • 这有点帮助......但我计划以数十亿位数的方式存储一些东西。我在想一些类似字符串解决方案的东西,但不知道从哪里开始。
      【解决方案8】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-25
        • 1970-01-01
        • 2013-02-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多