在c中可以得到100个以上的十进制数字吗?
如果是,代码的必要部分是什么?
在Java中有一个叫“cc>”但它仍然不能达到55位数以上。

最佳答案

使用J库:
Download the J#可再发行以获取j类库。This article hints关于如何在您的.net项目中使用它获得压缩能力,并对bigdecimal做了一些解释,但是正如ramhound所解释的,这篇文章相对比较老。
下载后,将vsjlib添加到项目中。它在.net 4.0上对我不起作用,但在2.0项目上确实起作用。它包含一个bigdecimal类等。不确定,但是,如果这给你多达100个小数,但你可能会给它一个尝试。
使用MPIR——多精度整数和有理数
您可以为MPIR下载.NET here (download version 0.2)库的包装器。然后,执行以下操作:
将文件\wrapper.*.dll添加到项目中,确保在每次生成时都将它们复制到调试或发布目录中。
\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将只保留有效数字。您还需要添加用于打印指数的逻辑,或者添加一组零。
结果是6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625E-60
完整mpir库上的documentation PDF file显示了如何更详细地使用它。

09-06 05:00