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