bash – 如何使bc处理科学数据(又名指数)符号?

前端之家收集整理的这篇文章主要介绍了bash – 如何使bc处理科学数据(又名指数)符号?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
bc不喜欢以科学符号表示的数字(又称指数符号)。
$ echo "3.1e1*2" | bc -l
(standard_in) 1: parse error

但是我需要使用它来处理以这个符号表示的几个记录。有没有办法让bc了解指数符号?如果没有,我可以做些什么来将它们翻译成bc会理解的格式?

不幸的是,bc不支持科学记数法。

但是,它可以被翻译成bc可以处理的格式,使用sed:
通过使用

value=`echo ${value} | sed -e 's/[eE]+*/\\*10\\^/'`

您可以用“* 10 ^”替换“e”(或“e”,如果指数为正),那么bc会及时了解。即使指数为负,或者数字随后乘以另一个功率,并且允许跟踪有效数字,这也是可行的。

编辑:感谢jwpat7和Paul Tomblin澄清sed语法的方面。

编辑:

正如奥马伊指出的那样,这也可以在纯粹的黑社会中完成。只需使用

value=${value/[eE]+*/*10^}

完成与上述完全相同的操作。

猜你在找的Bash相关文章