Высокий, мне нужно протестировать мой калькулятор произвольной точности, и, bc
похоже, это хороший критерий для сравнения, однако, bc
обрезает ли результат каждого умножения до максимального масштаба задействованных операндов.
Есть ли быстрый способ отключить это или автоматически установить масштаб каждого умножения на сумму масштабов факторов, чтобы он не терял никакой точности?
Если у вас есть более элегантное решение, включающее что-то другое bc
, я был бы признателен, если бы вы поделились им
Пример:
$ bc <<< '1.5 * 1.5'
2.2
Реальный ответ - 2,25.
bc
calculator
PSkocik
источник
источник
Ответы:
Вы можете контролировать масштаб, который
bc
выводится сscale=<#>
аргументом.Используя ваш пример:
Вы также можете использовать
-l
переключатель (благодаря @manatwork), который инициализирует масштаб до 20 вместо значения по умолчанию 0. Например:Вы можете прочитать больше о
scale
наbc
странице руководства .источник
bc -l
. « -L (буква ell.) Определите математические функции и инициализируйте масштаб до 20 вместо нуля по умолчанию» -bc
спецификацияmin(max(sx,sy,scale),sx+sy)
гдеsx
иsy
находятся масштабыx
иy
вx*y
. Настройкаscale=scale(x)+scale(y)
даст максимальную необходимую точность. Установка масштаба на большее число (например, 1000) не приведет к увеличению масштаба результата. Переменная масштаба влияет только на s, и результат деленияscale=1000; a/1
создаст результат с 1000 десятичными цифрами (после точки) независимо от того, какой масштаб был раньше.Попробуй это :
Поиск человека до н.э. для переменной масштаба
источник
Я создал эту функцию bash, которая не будет отображать конечные нули
Пример:
calc 1.25^3
= 1.953125источник