gpt4 book ai didi

c# - 如何在 C# 中获取超过 100 位的十进制数字?

转载 作者:可可西里 更新时间:2023-11-01 08:10:41 25 4
gpt4 key购买 nike

在 C# 中是否可以获取超过 100 位的十进制数字?

如果是,代码的必要部分是什么?

在 Java 中有一个叫做 BigDecimal 的东西,但它仍然不能超过 55 位。

最佳答案

使用 J# 库:

Download the J#可重新分发以获取 J# 类库。 This article hints关于如何使用它在您的 .NET 项目中获得 ZIP 能力,并解释了一些关于 BigDecimal 的信息,但正如 Ramhound 解释的那样,这篇文章相对较旧。

下载后,将vsjlib 添加到您的项目中。它在 .NET 4.0 上对我不起作用,但在 2.0 项目上确实有效。它包含一个 BigDecimal 类,等等。但是,不确定这是否会给您最多 100 位小数,但您可以试一试。

使用 MPIR——多精度整数和有理数

您可以下载 MPIR 的包装器.NET here (download version 0.2) 的图书馆.然后,执行以下操作:

  • 将文件 \wrapper.*.dll 添加到您的项目中,确保在每次构建时将它们复制到您的 Debug 或 Release 目录中。
  • \wrapper\xmpir.cs 添加到您的项目
  • 将以下代码添加到您的项目中:

    // set the precision to 512 bits (adjust this to your needs)
    mpir.mpf_set_default_prec(512);
    ulong default_prc = mpir.mpf_get_default_prec();

    // init vars (important!)
    mpir.mpf_t val = mpir.mpf_init_set_d(.5);
    mpir.mpf_t result = mpir.mpf_init_set_ui(0);

    // calculate 0.5^200
    mpir.mpf_pow_ui(result, val, 200);
    double dresult = mpir.mpf_get_d(result);

    // convert result to a string, in the form 1.2345 (dot not in output) and exp holding exponent
    long exp;
    string sresult = mpir.mpf_get_string(out exp, 10, 0, result);

    // free vars (important!)
    mpir.mpf_clear(val);
    mpir.mpf_clear(result);

请注意,变量 sresult 将只保存有效数字。您还必须添加用于打印指数或一堆零的逻辑。

Result is 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625E-60

A documentation PDF file在完整的 MPIR 库中更详细地展示了如何使用它。

关于c# - 如何在 C# 中获取超过 100 位的十进制数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com