Linux awk:为什么可以';awk生成累进浮点数的完整列表? kitty@mypad:~$awk'BEGIN{for(i=0.01;i

Linux awk:为什么可以';awk生成累进浮点数的完整列表? kitty@mypad:~$awk'BEGIN{for(i=0.01;i,linux,awk,Linux,Awk,浮点不精确。0.1、0.2或0.3都不能用有限的二进制浮点来精确表示——只有分母中具有二次幂的分数才能(达到一点)--所以awk使用近似值进行计算。有时这些值会比您预期的稍大,有时会稍小。当它们稍大时,测试i浮点不精确。0.1、0.2或0.3都不能用有限的二进制浮点表示——只有二次幂的分数分母可以(在一定程度上)——因此awk使用近似值进行计算。有时这些值会比您预期的稍大,有时会稍小。当它们稍大时,测试i或者,awk'BEGIN{for(i=1;交替地,awk'BEGIN{for(i=1;i)

浮点不精确。0.1、0.2或0.3都不能用有限的二进制浮点来精确表示——只有分母中具有二次幂的分数才能(达到一点)--所以awk使用近似值进行计算。有时这些值会比您预期的稍大,有时会稍小。当它们稍大时,测试
i浮点不精确。0.1、0.2或0.3都不能用有限的二进制浮点表示——只有二次幂的分数分母可以(在一定程度上)——因此awk使用近似值进行计算。有时这些值会比您预期的稍大,有时会稍小。当它们稍大时,测试
i或者,
awk'BEGIN{for(i=1;交替地,
awk'BEGIN{for(i=1;i)
    kitty@mypad:~$ awk 'BEGIN{for(i=0.01;i<=0.1;i=i+0.01) print i}'
    0.01
    0.02
    0.03
    0.04
    0.05
    0.06
    0.07
    0.08
    0.09
    0.1
    kitty@mypad:~$ awk 'BEGIN{for(i=0.01;i<=0.2;i=i+0.01) print i}'
    0.01
    0.02
    0.03
    0.04
    0.05
    0.06
    0.07
    0.08
    0.09
    0.1
    0.11
    0.12
    0.13
    0.14
    0.15
    0.16
    0.17
    0.18
    0.19
#                             v-- here
awk 'BEGIN{for(i=0.01;i<=0.2+1e-9;i=i+0.01) print i}'
$ echo | awk '{ print 0.2 + 1e-30 == 0.2 }'
1