Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.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
Bash 十进制数转换_Bash_Numbers_Decimal - Fatal编程技术网

Bash 十进制数转换

Bash 十进制数转换,bash,numbers,decimal,Bash,Numbers,Decimal,在bash中,我试图用小数(含分数)编码一个条件数。然后我发现我不能在bash中使用小数。 我的剧本如下: a=$(awk '/average TM cross section = / {CCS=$6}; END {printf "%15.4E \n",CCS}' ${names}_$i.out) a=$(printf '%.2f\n' $a) echo $a 在*.out文件中,数字以科学符号表示。最后,echo$a会给我一个245.35号(或我文件中的其他数字)。所以,我想知道如何将

在bash中,我试图用小数(含分数)编码一个条件数。然后我发现我不能在bash中使用小数。 我的剧本如下:

 a=$(awk '/average TM cross section = / {CCS=$6}; END {printf "%15.4E \n",CCS}' ${names}_$i.out)
 a=$(printf '%.2f\n' $a)
 echo $a
*.out
文件中,数字以科学符号表示。最后,
echo$a
会给我一个245.35号(或我文件中的其他数字)。所以,我想知道如何将输出编号245.35改为24535,这样我就可以在bash中进行条件转换


我试着倍增,但显然不起作用。有人能帮忙做这个转换吗?

根据您提供的信息,这与任何算术运算无关

把它当作绳子。找到小数点并将其删除。这就是我的理解


您可能最好使用
bash
以外的工具来进行算术运算——调用更强大的工具。您可能会发现以下链接要么鼓舞人心,要么令人毛骨悚然:(“shell脚本中的算术表达式”)和(“bash中的疯狂计算”);如果你认真地尝试使用基于bash的算术,恐怕你最终会遇到这种情况。特别是,其中第二篇文章中的
to_rational
函数包含了一些使用正则表达式分解小数的代码,尽管他在处理小数时做的事情听起来比你做的更复杂。

 a=$(awk '/average TM cross section = / {CCS=$6}; END {printf "%15d\n",CCS * 100}' ${names}_$i.out)
现在您的输出将是一个整数

请注意,awk是为处理大型文件和测试逻辑而设计的。您的所有/大部分处理可能都可以在一个awk过程中完成。如果您正在处理大量数据,则可以节省大量时间


我希望这能有所帮助。

请编辑您的问题,以表明您是否需要四舍五入,即245.35=245 VS 245.99=246?您是否需要使用科学记数法,即1.1457e6?祝你好运。我根本不需要任何舍入。数字245.35来自科学符号2.4535E2。请编辑您的问题,以包括示例输入和所需输出。也就是说,您的数据是否每个都包含2.4535E2?否则我们只是猜测你需要什么。祝你好运。为什么要进行所有额外的步骤,为什么不干脆
…END{printf(“%15d\n”,CCS)}…
祝你好运。这样做只会给我3个数字。我会说这太可怕了。我不得不说,我对脚本的了解非常肤浅,我无法理解。不幸的是,这种恐惧几乎是不可避免的。如果您在
bash
中除了做算术之外还有其他选择,您可能应该选择。。。