"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 변수가 쉘 스크립트에서 17.92857142857143 값을 얻는다고 가정하고 다음 줄을 사용하여 이를 반올림하고 인쇄합니다.
python2 -c 'print round('$exp',3)'