用awk计算负指数
我用awk来衡量一个数字,但是awk给出了一个错误的答案。例如: 值=-565,刻度=10E-3用awk计算负指数,awk,Awk,我用awk来衡量一个数字,但是awk给出了一个错误的答案。例如: 值=-565,刻度=10E-3 awk -v a=-565 -v b=10E-3 'BEGIN { print (a * b) } ' Answer: -5.65 这是错误的 如果我使用^E而不是E,我会得到: awk -v a=-565 -v b=10^-3 'BEGIN { print (a * b) } ' Answer: -5650 这也是错误的 但是,如果我将10E-3更改为0.001,我会得到正确答案: awk -
awk -v a=-565 -v b=10E-3 'BEGIN { print (a * b) } '
Answer: -5.65
这是错误的
如果我使用^E而不是E,我会得到:
awk -v a=-565 -v b=10^-3 'BEGIN { print (a * b) } '
Answer: -5650
这也是错误的
但是,如果我将10E-3更改为0.001,我会得到正确答案:
awk -v a=-565 -v b=0.001 'BEGIN { print (a * b) } '
Answer: -0.565
我尝试强制awk打印浮点,但仍然得到错误的答案:
awk -v a=-565 -v b=10E-3 'BEGIN { printf "%f\n", (a * b) } '
Answer: -5.650000
知道它为什么会这样吗?10e-3是0.01,而不是0.001,所以答案是正确的
In [12]: 10e-3 == 10 * 10**-3 == 0.01
Out[12]: True
根据:10^−3=0.001正确,但10e-3是10*10^-3,而不是10^-3Ah是的,这是正确的,因此结果是正确的。那么我使用10^-3的行有什么问题吗?当你说
-vb=10^-3
时,b
被认为是一个字符串---awk不知道如何将其作为代码片段进行“评估”。当awk在数值操作的上下文中找到字符串时,它只使用数字,直到不能作为数字一部分的第一个字符为止,在本例中为10
。你会得到与jas相同的答案好吧,我不知道。将我所有的刻度从指数改为十进制。有没有办法绕过awk的限制?