PowerShell数学错误

M J*_*ter 2 powershell powershell-2.0

为什么当答案介于0和1之间时,PowerShell似乎给我错误的答案?

PS C:\users\me> 31.2 - 31
0.199999999999999   <<< wrong
PS C:\users\me> 31.2 - 30
1.2                 <<< right
PS C:\users\me>  31.2 % 10
1.2                 <<< right
PS C:\users\me> 30.2 % 10
0.199999999999999   <<< wrong
PS C:\users\me> 30.2 / 151
0.2                 <<< right
Run Code Online (Sandbox Code Playgroud)

Mat*_*tin 6

你需要使用[小数]来获得人在街上的数学.

[decimal]31.2 - [decimal]31
Run Code Online (Sandbox Code Playgroud)

要么

31.2d - 31
Run Code Online (Sandbox Code Playgroud)

数字文字默认为double,不能表示多个小数(因为它们需要重复分数,涉及舍入错误等)

参考:https: //devcentral.f5.com/articles/powershell-abcs-t-is-for-type-literals

  • 您可以使用后缀"d"(例如31.2d)来获取小数类型. (2认同)