我想要计算两个负浮点数之间的差额,然后检查结果是否低于某个阈值。数字存储在file.dat
中,因为此计算将多次完成,计算必须依赖于直接从文件中获取值,而无需手动格式化。例如,file.dat
看起来是这样的。
-.63354975E+03 -.63354982E+03
现在,由于bash无法处理浮点,所以我尝试了以下方式的bc
:
paste -sd- file.dat | bc >> file.dat
paste
命令将输入转换为
-.63354975E+03--.63354982E+03
bc
应该删除它们,但是我得到了错误消息(standard_in) 1: syntax error
。我可以使用sed
将一个数字改为正数,然后添加它们,但是有什么方法可以直接用bc
来实现呢?
当我使用paste -sd+ file.dat | bc >> file.dat
时,会出现另一个问题。这应该加上数字,但是结果是4.932900412
,与预期的1267.09957
相去甚远。当我用-633.54975+-633.54982
格式的数字输入计算时,就会得到预期的结果。因此,bc
似乎没有正确地处理指数数。有办法解决这个问题吗?
发布于 2019-01-16 08:58:10
awk
解决方案:
awk 'NR==1{a=$0};NR==2{b=$0};END{print (a)-(b)}' file.dat
https://unix.stackexchange.com/questions/494822
复制相似问题