bc: установить количество цифр после десятичной точки

С APT, как правило, важнее не то, что ваше соединение зашифровано, но что файлы, которые вы получаете, не были изменены.

APT имеет встроенную проверку подписи для обеспечения этого , Шифрование будет препятствовать перехватчикам от того, чтобы видеть то, что вы скачиваете, но то, что вы на самом деле загрузки (и запрос) довольно спорное

: это будет такими же, как и тысячи других пользователей Ubuntu скачивает и файлы не содержат ничего, что не доступно на многих серверах. Тем не менее, если вам нужна конфиденциальность о том, какие пакеты, в частности, вы загружаете, можно использовать HTTPS (укажите его в вашем источнике.list).

Проверка подписи, встроенная в APT, гарантирует, что файлы, которые вы получили, не были изменены. На самом деле не имеет значения, откуда берутся файлы, и даже возможно иметь прокси или обратные прокси-серверы между вами и сервером для снижения нагрузки на сервер или ускорения загрузки. Проверка подписи по-прежнему гарантирует, что вы получаете немодифицированный файл, соответствующий сигнатуре, которая может быть криптографически создана только с исходным файлом и копией закрытого ключа Ubuntu.

Если вы переключитесь на HTTPS, не сможете использовать прокси-серверы для ускорения доступа или уменьшения нагрузки. И это не добавило бы никакой уверенности в том, что не подделывает подписи подписи APT еще не дает. Однако это означало бы, что подслушивающие устройства (например, ваш интернет-провайдер) не смогут увидеть, какие пакеты вы загружаете (что вряд ли будет конфиденциальным, и, как указал Жиль, они могли угадать размер файла). [ ! d4]

1
задан 8 February 2017 в 11:32

3 ответа

scale работает только для деления; если некоторые вундеркинды нуждаются в нем в умножении, то вы можете добиться этого, используя строковые манипуляции. Скажем, если вам нужно умножить 32 * 0.60, ответ будет 19.20.

Использование String Manipulation
$ S=$(echo "32*.60" | bc ) ; echo ${S%.*}
19
Синтаксис синтаксиса строк: ${Variable%pattern}, это приведет к удалению короткого совпадающего шаблона, который появляется после % ]. Дополнительные сведения о обработке строк см. В руководстве Advanced Bash-Scripting Guide. Используя Scale, как указано в **chronitis**
$ echo "scale=0; 32*60/100" | bc
19
Чтобы избавиться от конечных 0, вместо манипуляции с строками, можно также сделать деление на 1.
$ echo "0.232 * 1000" | bc
232.000

$ echo "0.232 * 1000 / 1" | bc
232
6
ответ дан 25 May 2018 в 04:22
  • 1
    Обратите внимание, что, как я упомянул в своем комментарии к вопросу, это не вызвано умножением, а скорее входными числами, имеющими десятичную часть. Или, говоря иначе, число с "самым длинным" десятичная часть будет определять, сколько десятичных разрядов будет иметь результат. – Richlv 17 August 2016 в 21:55

В дополнение к предыдущим ответам

echo "scale=2; 1.0150876" | bc

Возвращает

1.0150876

Добавить операции Math, чтобы получить только 2 десятичных числа - (NUMBER * 100) / 100

echo "scale=2; (1.0150876 * 100) / 100" | bc

Теперь возвращает

1.01
3
ответ дан 25 May 2018 в 04:22

Round-off

scale = 2 обрезает ответ на две десятичные цифры, но мы можем добиться округления следующим образом:

$ echo "a=12/104; scale=2; (a+0.005)/1" | bc -l
.12
0
ответ дан 25 May 2018 в 04:22

Другие вопросы по тегам:

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