Оператор If else, включающий два числа в научном представлении [дубликат]

0
28.04.2016, 22:06
1 ответ

Использование awk

Как @Theophrastus отметил выше, ни bash , ни bc не поддерживают научную обозначение.

Для простых сравнений и вычислений я предлагаю использовать awk (который обрабатывает числа xEy):

a=10e-12
b=12e-12

r=$(awk 'BEGIN{print ('$a'>'$b')?1:0}')
echo $r

Для более сложных выражений вы можете избежать громоздкой обработки кавычек и экранирования, передав переменные в awk с -v , что на самом деле было бы предпочтительным способом сделать это:

r=$(awk -v a="$a" -v b="$b" 'BEGIN{print (a<b)?1:0}')

Использование «bc»

Есть способы переформатировать вашу нотацию в альтернативную форму x * 10 ^ y , что понимается как bc (или вы можете просто сделать это самостоятельно), однако bc имеет некоторые особенности, когда дело доходит до отрицательных показателей степени (например, ваш пример):

$ bc
10^12
1000000000000
10^-12
0
1
28.01.2020, 02:48

Теги

Похожие вопросы