System.Numerics.BigInteger允许你将大整数相乘,但浮点数是否有相同类型的东西?如果没有,我可以使用免费图书馆吗?
//this but with floats
System.Numerics.BigInteger maxint = new BigInteger(int.MaxValue);
System.Numerics.BigInteger big = maxint * maxint * maxint;
System.Console.WriteLine(big);
Run Code Online (Sandbox Code Playgroud) 我试图在我的 Mac (OS X 10.8.4) 上安装“bigfloat”包,但遇到了一些问题。包“bigfloat”需要另外两个依赖项:1) mpfr 和 2) gmp。
我在这里安装了 gmp: http: //gmplib.org/ <-- 这似乎工作正常。
但安装 mpfr 并不那么容易(http://www.mpfr.org/mpfr-current/mpfr.html#Installing-MPFR)。他们说只需 ./configure、make 和 make install 即可使其运行,但我收到此错误:
checking for gmp.h... no
configure: error: gmp.h can't be found, or is unusable.
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了一下,人们建议在配置命令中指定路径,但到目前为止我还没有运气。任何帮助,将不胜感激!
作为参考,我正在查看 mpfr-3.1.2 (位于目录:/Users/myusername)和 gmp-5.1.2 (位于同一目录)。
谢谢!
在 Julia 中,有人实现了正态分布 pdf 或 cdf 来支持任意精度 BigFloats。
例如,此代码返回 0.0,而实际上这些值应该略有不同。
x = parse(BigFloat, "2.1")
x_small = float64(x)
pdf(Normal(), x) - pdf(Normal(), x_small)
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个快速的BigFloat单位,该单位可以处理加,减,乘和除(对数很好,但不是必需的),并且精度至少为100个小数位。我已经尝试过此装置,但它比标准扩展操作的速度慢约1000倍。那么,有人知道Delphi的BigFloat更快吗?
亨利
嗯......我遇到了一个问题我有一个计算结果是超过10 ^ -308(双.net中的最大值)我通过一个名为BIGFLOAT的库解决了这个问题http://www.fractal- landscapes.co.uk/bigint.html,
我需要计算一些像0.4 ^(1000或100000000)这样的问题我需要花很长时间来研究并行或分布式编程但是我需要一个快速且易于理解的解决方案我将要去在接下来的6小时内完成这个项目!! :d
这是代码:
private BigFloat getBlocking(double k)
{
double p1, p2;
BigFloat p3;
p3 = new BigFloat(pp);
p1 = this.P / (double)(k / (double)this.N);
p2 = Math.Pow((1 - p1), 2);
p3= new BigFloat(1-p2,pp);
p3.Pow((int)k);
return p3;
}
Run Code Online (Sandbox Code Playgroud)
其中K是1000,N是1001
我遇到了 Golang big.Float 计算的一些有趣问题。
问题是
10001000100010001000100010001000100010001000100015.5533 / 1000000000000000000
= 10001000100010001000100010001000.1000100010001000155533
然而,big.Float给出了“10001000100010001000100010001000.1000100010001000155532999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 99999999999999999999999999999999999999999999999999999999999999999999997”
代码:
var prec uint = 1024 // 512
dec, _ := new(big.Float).SetPrec(prec).SetString("1000000000000000000")
f, _ := new(big.Float).SetPrec(prec).SetString("10001000100010001000100010001000100010001000100015.5533")
q := f.Quo(f, dec)
fmt.Printf("Percision: %d\n", prec)
fmt.Printf("Quotient: %s\n", q.Text('f', -1))
Run Code Online (Sandbox Code Playgroud)
结果:
Percision: 1024
Quotient: 10001000100010001000100010001000.10001000100010001555329999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999997
Run Code Online (Sandbox Code Playgroud)
更令人困惑的部分是,如果我设置 prec = 512(较小的精度),它会产生正确的结果。
Percision: 512
Quotient: 10001000100010001000100010001000.1000100010001000155533
Run Code Online (Sandbox Code Playgroud)
有人知道我的代码有什么问题或者如何配置 big.Float 以获得预期结果吗?
谢谢大家!
bigfloat ×6
c# ×2
bigint ×1
biginteger ×1
bignum ×1
computation ×1
delphi ×1
gmp ×1
go ×1
julia ×1
math ×1
mpfr ×1
numeric ×1
performance ×1
python ×1