PowerShell数学错误

PowerShell数学错误,powershell,powershell-2.0,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:\u

当答案介于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
PS C:\users\me>31.2-31

0.1999999999999999您需要使用[decimal]来获取街头艺人的数学

[decimal]31.2 - [decimal]31

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

参考:

浮点数用基数2(尾数和指数)表示。因此,经常会出现这样的舍入错误,这种错误会不时出现。您可以在此处阅读更多关于此的信息:

获得更令人满意结果的另一种方法是限制显示数字的精度,例如:

c:\PS> "{0:F4}" -f (31.2 - 31)
0.2000

您也可以使用后缀“d”(例如31.2d)来获取十进制类型。文本是双精度的,而不是浮点型。您可以使用(1.0)进行验证。GetType()答案现在反映注释。
c:\PS> "{0:F4}" -f (31.2 - 31)
0.2000