맥락은 2개의 변수가 다음과 같이 나누어져 있다는 것입니다.부동 소수점결과는 다음과 같습니다.
printf "%0.5f\n" $(echo 305/15 | bc -l)
20.33333
어떻게 항상 반올림할 수 있나요?다음정수는이십 일? 이는 20.5를 초과하는 값을 21까지 반올림하는 것이 아닙니다.최근의정수. 값이 정확히 정수이거나 어떤 방식으로든 그 위에 있으면 다음 정수가 되기를 원하기 때문에 묻고 있습니다. 그럼 어떻게 평가해야 할까요? if
성명이 있나요 ? 내가 넣으면뜨다쉘은 정수를 기대한다고 불평합니다. Q&A의 정보를 어떻게 활용하는지 잘 모르겠습니다.이것다음 정수로 "위로" 변환을 구현합니다. 뭔가 빠졌나요?
답변1
bc
다음 기능을 사용할 수 있습니다 .
echo "a=305; b=15; if ( a%b ) a/b+1 else a/b" | bc
답변2
노력하다:
ceil() {
echo "define ceil (x) {if (x<0) {return x/1} \
else {if (scale(x)==0) {return x} \
else {return x/1 + 1 }}} ; ceil($1)" | bc
}
그 다음에:
$ ceil 5.1
6
$ ceil 5.5
6
$ ceil 5.9
6
답변3
양의 정수의 경우:
a=305
b=15
echo $((a%b?a/b+1:a/b))
21
답변4
전달 awk
하고 0.5
결과에 추가하면 .f
자동으로 가장 가까운 숫자로 반올림됩니다.
awk 'BEGIN{printf("%.f\n", (305/15)+0.5)}'
21
당신이 그것을 원한다면지면함수 -0.5
를 대신 사용하세요