Схоже, що Bc не підтримує операції з плаваючою операцією, коли я echo 1/8 | bc
це роблю, отримую мені нуль.
Я перевірив bc (1)
, але це навіть не згадує float
, тому мені цікаво, чи підтримується він?
Схоже, що Bc не підтримує операції з плаваючою операцією, коли я echo 1/8 | bc
це роблю, отримую мені нуль.
Я перевірив bc (1)
, але це навіть не згадує float
, тому мені цікаво, чи підтримується він?
Відповіді:
bc
не робить плаваючу крапку, але робить фіксовану точність десяткових чисел. -l
Прапор Hauke згадує вантажі математичної бібліотеки для наприклад. триггер функції, але це також означає
[...] шкала за замовчуванням дорівнює 20
scale
є однією з ряду "спеціальних змінних", згаданих на сторінці man. Ви можете встановити його:
scale=4
У будь-який час (будь то -l
вживаний чи ні). Він позначає кількість значущих цифр, використаних у десятковій частині . Іншими словами, наступні рішення будуть округлені до цієї кількості цифр після десяткової шкали (== фіксована точність).
Шкала за замовчуванням не -l
дорівнює 0, тобто округлена до цілих чисел.
man page говорить:
Якщо bc викликається параметром -l, математична бібліотека попередньо завантажується [...]
Зрозумілість цього можна справді покращити ...
1) Числа в bc мають масштаб. Шкала числа не слід плутати з коефіцієнтом масштабу. Той самий світовий 'шкала' використовується як функція для запиту масштабу числа або як параметр для встановлення масштабного коефіцієнта.
echo "scale=scale(1.1);11/10" | bc will return 1.1
2) Коефіцієнт масштабу визначає, скільки цифр зберігається праворуч від десяткової крапки при виконанні операцій. Якщо s - коефіцієнт поточного масштабу, sa - масштаб першого операнда a, sb - масштаб другого операнда b, результати обрізаються таким чином:
scale of result
a+b max(sa,sb)
a-b max(sa,sb)
a*b min(sa+sb , max(s,sa,sb))
a/b s
a%b so that a = b*quotient + remainder; remainder has sign of a
a^b min(sa×|b|, max(s,sa)); b must be integer
sqrt(a) max(s,sa)
3) Спочатку Bc був препроцесором постійного струму. Зараз у багатьох системах bc є окремою програмою.
Джерело: [ https://plan9.io/magic/man2html/1/dc]
echo "scale=4; 1/8" | bc