
По сути, в Bash я пытаюсь взять ввод секунд от пользователя и найти часы. Так что, по сути, если пользователь вводит 35, вывод должен быть 0,00972222.
Но bash выдает мне ноль.
Вот команда, которая у меня есть:
echo "Enter the seconds you wish to convert to hours: " && read sec && echo " $((sec/3600)) is the amount of hours "
Можно ли сделать так, чтобы при вводе 35 выводилось 0,00972222?
Спасибо!
решение1
Вот попробуй это
echo $(echo "35/3600" | bc -l )
так что ваша команда будет выглядеть так
echo "Enter the seconds you wish to convert to hours: " && read sec && echo " $(echo "$sec/3600" | bc -l ) is the amount of hours "
Для управления количеством печатаемых значащих цифр используйте scale=N
. Например:
$ echo "scale=3; 35/3600" | bc -l
.009
Если вы также хотите, чтобы интерлиньяж был 0
напечатан (что, как ни странно,bc
не будет легко сделать), вы можете ввести число в printf
(который также может округлить его в большую/меньшую сторону):
$ printf '%.3f\n' $(echo "35/3600" | bc -l)
0.010
$ printf '%.4f\n' $(echo "35/3600" | bc -l)
0.0097