不懂 bc 的逻辑,换 awk 解决的
awk "BEGIN {printf \"%.3f\n\", $line}"
bc 的四舍五入逻辑有点怪,奇数不进位,偶数进位。
-l参数默认20位有效数字,也能解决。
printf "%.3f" $(bc -l <<< $line)
【 在 eskimo1024 的大作中提到: 】
: line="5+50*3/20 + (19*2)/7"
: echo "scale=3; $line" | bc -l
: # 输出 17.928
: # 精确值:17.9285714286
: # 不应该是17.929吗?
: line="-105+50*3/20 + (19^2)/7"
: echo "scale=3; $line" | bc -l
: # 输出 -45.929
: # 精确值:-45.9285714286
: # 这个和期望的一致
--
修改:eskimo1024 FROM 14.112.218.*
FROM 14.112.218.*