Ограничивающая точность Bash переменных с плавающей точкой

Это связано с Вашими беспроводными опциями, некоторые беспроводные карты имеют многих функция, которые incompatiable с будят опцию. однако, если у меня есть Ваша проблема, скомпилируйте новое ядро, такое как 3.8.2 этапов.

6
24.12.2014, 22:16
3 ответа

Простой способ использовать printf :

$ printf "%.3f\n" 0.005000000000
0.005

для удаления ведущих 0 , просто разбирайте его с SED :

$ printf "%.3f\n" 0.005000000000 | sed 's/^0//'
.005
8
27.01.2020, 20:22

Существует специальная переменная под названием Scale . Вы можете установить эту переменную для ограничения точности.

Пример

Эхо «300/7» | BC -L

Выход:

42.85714285714285714285

Для ограничения точности,

ECHO «Scale = 2; 300/7» | BC -L

Выход:

42,85

Обновлено

Эхо «Шкала = 3; 300/7» | BC -L |. Sed 'S / [0-9] * \ .//// G'

Выход:

.857

6
27.01.2020, 20:22

Эта команда sed удаляет конечные нули:

sed 's/\(0\.0*[1-9][1-9]*\)0*/\1/'

Он запоминает любые значения, начинающиеся с 0., за которыми следует ноль или более 0, за которыми следует 1 или более цифр от 1 -9, за которыми следует ноль или более 0. Затем он усекает ноль или более замыкающих 0.

Это позволяет вам разобрать произвольное количество завершающих нулей и сохранить любое произвольно малое число больше нуля. независимо от того, насколько он мал.

Например

0.054000становится 0.054, или 0.00000010000000становится 0.0000001и так далее.

Для получения дополнительной информации ознакомьтесь с учебным пособием Grymoires awesome sed .

0
02.07.2020, 11:42

Теги

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