高,我需要测试我的任意精度计算器,并且bc
似乎是一个很好的比较标准,但是,bc
确实将每个乘法的结果截断为所涉及操作数的最大范围。
有没有一种快速的方法可以关闭此功能或自动将每次乘法的小数位数设置为因子的小数位数之和,以便它不会丢失任何精度?
如果您有一个更优雅的解决方案,涉及除 之外的其他内容bc
,我将不胜感激您的分享。
例子:
$ bc <<< '1.5 * 1.5'
2.2
真正的答案是2.25。
答案1
bc
您可以使用参数控制输出的比例scale=<#>
。
$ echo "scale=10; 5.1234 * 5.5678" | bc
28.52606652
$ echo "scale=5; 5.1234 * 5.5678" | bc
28.52606
使用你的例子:
$ bc <<< 'scale=2; 1.5 * 1.5'
2.25
您还可以使用-l
开关(感谢@manatwork),它将把比例初始化为 20,而不是默认的 0。例如:
$ bc -l <<< '1.5 * 1.5'
2.25
$ bc -l <<< '1.52 * 1.52'
2.3104
您可以阅读更多scale
有关bc
手册页。
答案2
尝试这个 :
$ bc
scale=10
1.5 * 1.5
2.25
在 bc 的 man 中搜索比例变量
答案3
我创建了这个 bash 函数,它不会显示尾随零
calc () { MAX_PRECISION=20; bc <<< "scale=$MAX_PRECISION; scale = scale($@); $@"; }
示例:calc 1.25^3
= 1.953125