#! /bin/sh
a1=260
a2=9150
echo "$a1 * 100/$a2" | bc
выходсценарий оболочки, где Ьс теряет Прецизионный
2
, где он должен быть
2.8415
почему точность теряется, хотя я использую bc
?
#! /bin/sh
a1=260
a2=9150
echo "$a1 * 100/$a2" | bc
выходсценарий оболочки, где Ьс теряет Прецизионный
2
, где он должен быть
2.8415
почему точность теряется, хотя я использую bc
?
Попробуйте это (легко повторно использовать, вам просто нужно помнить, чтобы присоединяет выражение математики с scale=N
):
$ echo "scale=10; $a1 * 100/$a2" | bc
2.8415300546
Как вы можете видеть, вы можете указать длину шкалы, как вы хотите.
См
man bc | less +/^' *scale \(\s*exp
Вы можете использовать AWK для лучшей арифметики:
awk -v a1=260 -v a2=9150 'BEGIN{printf("%.4f\n", (a1 * 100/a2))}'
выход: 2,8415
Вы можете загрузить математическую библиотеку: Ьс -l
#! /bin/sh
a1=260
a2=9150
echo "$a1 * 100/$a2" | bc -l
выход
2.84153005464480874316
каким образом это лучше выглядит более сложным – user568109
@ user568109: Я просто имел в виду AWK обеспечивает более арифметических возможностей, чем стандартный Баш КСТАТИ, часть которого ищет сложным для вас? – anubhava
вы можете сделать это с помощью bc легко и OP не просил awk – user568109