bash – 如何使bc处理科学数据(又名指数)符号?
发布时间:2020-12-15 19:32:55 所属栏目:安全 来源:网络整理
导读:bc不喜欢以科学符号表示的数字(又称指数符号)。 $ echo "3.1e1*2" | bc -l(standard_in) 1: parse error 但是我需要使用它来处理以这个符号表示的几个记录。有没有办法让bc了解指数符号?如果没有,我可以做些什么来将它们翻译成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^} 完成与上述完全相同的操作。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |