Hacemos una revisión exhaustiva cada artículo de nuestro espacio con la meta de enseñarte siempre la información certera y certera.
Solución:
¿Por qué utilizar lenguajes de escritura externos? Obtienes piso por defecto. Para conseguir ceil, haz
$ divide=8; by=3; (( result=(divide+by-1)/by )); echo $result
3
$ divide=9; by=3; (( result=(divide+by-1)/by )); echo $result
3
$ divide=10; by=3; (( result=(divide+by-1)/by )); echo $result
4
$ divide=11; by=3; (( result=(divide+by-1)/by )); echo $result
4
$ divide=12; by=3; (( result=(divide+by-1)/by )); echo $result
4
$ divide=13; by=3; (( result=(divide+by-1)/by )); echo $result
5
....
Para tener en cuenta los números negativos, puede reforzarlo un poco. Probablemente formas más limpias, pero para empezar
$ divide=-10; by=10; neg=; if [ $divide -lt 0 ]; then (( divide=-divide )); neg=1; fi; (( result=(divide+by-1)/by )); if [ $neg ]; then (( result=-result )); fi; echo $result
-1
$ divide=10; by=10; neg=; if [ $divide -lt 0 ]; then (( divide=-divide )); neg=1; fi; (( result=(divide+by-1)/by )); if [ $neg ]; then (( result=-result )); fi; echo $result
1
(Editado para cambiar let ...
a (( ... ))
.)
Llame a un lenguaje de secuencias de comandos con función ceil. Dado $NUMBER
:
python -c "from math import ceil; print ceil($NUMBER/500.0)"
o
perl -w -e "use POSIX; print ceil($NUMBER/500.0), qqn"
Aquí hay una solución usando bc (que debería instalarse en casi todas partes):
ceiling_divide() bc`
Aquí hay otro puramente en bash:
# Call it with two numbers.
# It has no error checking.
# It places the result in a global since return() will sometimes truncate at 255.
# Short form from comments (thanks: Jonathan Leffler)
ceiling_divide()
ceiling_result=$((($1+$2-1)/$2))
# Long drawn out form.
ceiling_divide()
# Normal integer divide.
ceiling_result=$(($1/$2))
# If there is any remainder...
if [ $(($1%$2)) -gt 0 ]; then
# rount up to the next integer
ceiling_result=$((ceiling_result + 1))
fi
# debugging
# echo $ceiling_result
Si guardas alguna cuestión y forma de beneficiar nuestro ensayo te recordamos escribir una nota y con mucho placer lo analizaremos.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)