2015-09-26 2 views

ответ

2

Насколько я знаю, только разделение использует информацию, указанную scale.

echo "scale=0; (9 * 150 + 8.092 * 560 + 3.181)/1" | bc 

будет эхо 5884, поскольку была взята только целая часть (частное!). Для того, чтобы получить желаемый результат (круглый), вы можете использовать:

echo "scale=0; ((9 * 150 + 8.092 * 560 + 3.181)+0.5)/1" | bc 

к сведению, что этот подход не будет работать для отрицательных чисел! См. Это сообщение: https://unix.stackexchange.com/a/89843

+0

Не совсем, хотя; вы не хотите добавлять 1, если выражение является точным целым числом. (Конечно, вероятность того, что это происходит, очень низка для произвольного выражения с плавающей запятой.) – chepner

+0

@chepner: хорошая точка, спасибо. Я немного улучшился. – fjellfly

0

Правильный результат. Страница руководства bc объясняет, как применяется расширение шкалы:

Поскольку вы умножаете/добавляете несколько чисел с заданным масштабом, результат будет иметь разный масштаб.

Смежные вопросы