Float операція з bc?


42

Схоже, що Bc не підтримує операції з плаваючою операцією, коли я echo 1/8 | bcце роблю, отримую мені нуль.

Я перевірив bc (1), але це навіть не згадує float, тому мені цікаво, чи підтримується він?


9
echo "scale=4; 1/8" | bc
LiuYan 刘 研

Це запитання, зокрема прийнята відповідь, може бути цікавим для вас.
Емануель Берг

Відповіді:


56

bcне робить плаваючу крапку, але робить фіксовану точність десяткових чисел. -lПрапор Hauke згадує вантажі математичної бібліотеки для наприклад. триггер функції, але це також означає

[...] шкала за замовчуванням дорівнює 20

scaleє однією з ряду "спеціальних змінних", згаданих на сторінці man. Ви можете встановити його:

scale=4

У будь-який час (будь то -lвживаний чи ні). Він позначає кількість значущих цифр, використаних у десятковій частині . Іншими словами, наступні рішення будуть округлені до цієї кількості цифр після десяткової шкали (== фіксована точність).

Шкала за замовчуванням не -lдорівнює 0, тобто округлена до цілих чисел.


27

man page говорить:

Якщо bc викликається параметром -l, математична бібліотека попередньо завантажується [...]

Зрозумілість цього можна справді покращити ...


14
Повідомте це про помилку як про помилку ...
vonbrand

0

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]

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.