为什么数学常量在 powershell 中截断方式不同?

问题描述 投票:0回答:1

我在 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)?
为什么它不与偶数个或字节(如 16,32,64)更紧密地对齐?

powershell math
1个回答
0
投票

请注意,虽然 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
© www.soinside.com 2019 - 2024. All rights reserved.