【问题标题】:How to handle floating point division for large numbers using bc in bash? [duplicate]如何在bash中使用bc处理大数的浮点除法? [复制]
【发布时间】:2021-03-27 16:58:39
【问题描述】:

我正在尝试使用指数符号计算大数的百分比。但是,当使用 bc 在 bash 上执行此操作时,我得到了我认为是溢出错误。

例如,如果我在 bash 中进行计算:

$ echo "6139391.0 / 2.9960647E7" | bc -l
2049151.60918664203376373104

计算已关闭。应该是0.20491516755

我一般如何使用 bc 或 bash 处理这种情况?

【问题讨论】:

  • 是的,我将这两个数字输入了计算器,这就是为什么我把它作为答案的原因。
  • 我已经把它放在多个计算器中并确认是这个数字。该公式确实会产生该输出。
  • 显然 bc 无法处理科学记数法:stackoverflow.com/a/12882612/4162356

标签: bc


【解决方案1】:

溢出? 不;它只是忽略了指数;它给你 6139391.0 / 2.9960647。

试试

echo "6139391.0 / 2.9960647E7" | sed -E 's/([0-9.]*)E([+-]*[0-9]*)/(\1*10^\2)/g' | bc -l

2.9960647E7 转换为(2.9960647*10^7)

【讨论】:

    【解决方案2】:

    bc 不支持科学记数法,请参阅this answer 了解解决方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多