Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用awk计算负指数_Awk - Fatal编程技术网

用awk计算负指数

用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来衡量一个数字,但是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 -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的限制?