我在 powershell 中做一些命令行数学,并遇到了以下好奇心。
# "{0:f64}" -f ([Math]::PI); "{0:f48}" -f ([Math]::PI)
3.1415926535897931159979634685441851615905761718750000000000000000
3.141592653589793115997963468544185161590576171875
# "{0:f64}" -f ([Math]::E); "{0:f51}" -f ([Math]::E)
2.7182818284590450907955982984276488423347473144531250000000000000
2.718281828459045090795598298427648842334747314453125
为什么
e
和 π
被截断为不同的十进制长度(51 与 48)?请注意,虽然 Pi 不断超出
3.141592653589793
,但这些只是幻想数字,因为 Pi 真实值的下一位数字是 2
,但 PowerShell [Math]
为您提供 1159...
。
Pi 的前 16 位数字是准确的,e 也是如此。
实际上这两个值都是将前 16 位数字的字符串转换为
double
:
(sandbox) PS C:\Users\grismar> "{0:f64}" -f [double]"3.141592653589793"
3.1415926535897931159979634685441851615905761718750000000000000000
(sandbox) PS C:\Users\grismar> "{0:f64}" -f [double]"2.718281828459045"
2.7182818284590450907955982984276488423347473144531250000000000000