awk中的科学和通用符号
我对以下两条awk路线的差异感到困惑:awk中的科学和通用符号,awk,Awk,我对以下两条awk路线的差异感到困惑: $ cat a.txt 1 $ awk '{$2=$1/1982300000 ;$3 = $2 * 0.05}{print $1"\t"$2"\t"$3}' a.txt 1 5.04465e-10 2.52232e-11 $ awk '{$2=$1/1.98*10^09 ;$3 = $2 * 0.05}{print $1"\t"$2"\t"$3}' a.txt 1 5.05051e+08 2.52525e+07 我想我用awk写的指数符号有点错误
$ cat a.txt
1
$ awk '{$2=$1/1982300000 ;$3 = $2 * 0.05}{print $1"\t"$2"\t"$3}' a.txt
1 5.04465e-10 2.52232e-11
$ awk '{$2=$1/1.98*10^09 ;$3 = $2 * 0.05}{print $1"\t"$2"\t"$3}' a.txt
1 5.05051e+08 2.52525e+07
我想我用awk写的指数符号有点错误,你能在这里纠正一下吗
$ echo 1 | awk -v OFS='\t' '{print $1, a=$1/(1.98*10^9), a*0.05}'
1 5.05051e-10 2.52525e-11
您需要添加括号,否则第二次乘法(10^9)不在分母中
或者,您可以使用e
符号
$ echo 1 | awk -v OFS='\t' '{print $1, a=$1/1.98e9, a*0.05}'
这不需要额外的帕兰语。这里
$ echo 1 | awk -v OFS='\t' '{print $1, a=$1/(1.98*10^9), a*0.05}'
1 5.05051e-10 2.52525e-11
您需要添加括号,否则第二次乘法(10^9)不在分母中
或者,您可以使用e
符号
$ echo 1 | awk -v OFS='\t' '{print $1, a=$1/1.98e9, a*0.05}'
这不需要额外的妄想症。这里有几件事你必须考虑:
1.23E4
或1.23E4
当您编写1.23*10^4
(假设^
表示求幂)时,您将主动执行求幂运算以计算10^4
是多少,然后是两个数字的乘法。定义一个数字看起来非常昂贵
a/b*c
不同于a/(b*c)
- 使用电子符号:
awk '{$2=$1/1.98e9 ;$3 = $2 * 0.05}{print $1"\t"$2"\t"$3}' a.txt
- 或添加括号:
awk '{$2=$1/(1.98*10^9) ;$3 = $2 * 0.05}{print $1"\t"$2"\t"$3}' a.txt
- 用1.23×10-4形式的科学记数法写成的数字,在归结到编程时,最好用电子记数法写成。最常见的电子符号形式是
或1.23E4
当您编写1.23E4
(假设1.23*10^4
表示求幂)时,您将主动执行求幂运算以计算^
是多少,然后是两个数字的乘法。定义一个数字看起来非常昂贵10^4
- 乘法与除法无关。这意味着
不同于a/b*c
a/(b*c)
因此,您的问题的解决方案是:
- 使用电子符号:
awk '{$2=$1/1.98e9 ;$3 = $2 * 0.05}{print $1"\t"$2"\t"$3}' a.txt
- 或添加括号:
awk '{$2=$1/(1.98*10^9) ;$3 = $2 * 0.05}{print $1"\t"$2"\t"$3}' a.txt
- 这里有几件事你必须考虑: