计算表达式并四舍五入到小数点后三位

计算表达式并四舍五入到小数点后三位

我有一个表达式"5+50*3/20 + (19*2)/7",需要将其四舍五入到小数点后三位。这个问题的答案是17.92857142857143。当我使用下面的脚本时,它给了我17.928.答案应该是17.929

read exp
echo "scale=3; $exp" |bc -l

还有一个问题是如何使用printf来完成相同的任务

答案1

就这样写:

read exp
printf %.3f $(echo "$exp" | bc -l)

答案2

您可以通过使用“here string”end删除两个来简化评论中的表达式echo

 printf "%.3f\n" "$(bc -l <<< "$var")"

甚至

 printf "%.3f\n" "$(bc -l <<< "5+50*3/20 + (19*2)/7")"

答案3

Python 似乎有你喜欢的行为:

$ echo 'print(round(' "5+50*3/20 + (19*2)/7" ', 3))' | python3
17.929

答案4

假设变量 $exp 在 shell 脚本中获取值 17.92857142857143,请使用以下行对其进行舍入并打印:

python2 -c 'print round('$exp',3)'

相关内容