Powershell为大bigint数计算错误值

时间:2018-04-04 18:21:31

标签: .net powershell bigint

[bigint][math]::pow(10,22) 

给出正确的结果:10000000000000000000000

[bigint][math]::pow(10,23) 

结果不正确:100000000000000008388608

[bigint]10e23

给出不同但也不正确的结果:999999999999999983222784

我认为System.Numerics.biginteger适用于任意大整数?

在Powershell中是否需要做一些特殊的事情才能正确计算任意大数,或者必须使用另一种方法?

1 个答案:

答案 0 :(得分:1)

pow函数采用double类型参数,并返回double类型的结果。你的int输入被隐式地转换为double,而double结果最好被转换为bigint。

Math.Pow Method documentation

另见similar thing reported as bug的回复。在该bug报告中,他们建议一个函数定义(包括代码),它将为大整数值计算pow。