Разделение с до н.э.

2477
Boldewyn

Я только начинаю с Bc Гну, и я застрял в самом начале (очень обескураживающий ...). Я хочу разделить два числа и получить результат с плавающей точкой:

$bc bc 1.06.94 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'.   15/12 1 15.0/12.0 1 15.000000/12.000000 1 scale(15.00000) 5 

Страница man говорит, что разделение возвращает число с той же шкалой, что и начальные значения. Очевидно, это либо неправда, либо я что-то упустил.

Поиск в Google не привел к новому пониманию (кроме того, что «БК» может также обозначать «Британская Колумбия»).

Вы видите мою ошибку? А еще лучше, вы знаете какие-нибудь хорошие ссылки / учебные пособия по BC?

5

4 ответа на вопрос

7
Joey

Вы можете установить масштаб с помощью

scale=2 

Тогда деление работает как положено:

scale=2 15/12 1.25 

Цитировать из Википедии:

Все числа и содержимое переменных являются числами произвольной точности, точность которых (в десятичных разрядах) определяется глобальной scaleпеременной.

Ах, это ядро ​​пуделя. Могу ли я установить масштаб глобально в некотором файле .bcrc? Boldewyn 14 лет назад 0
Нашел это: `export BC_ENV_ARGS = ~ / .bcrc` Boldewyn 14 лет назад 0
Я сомневаюсь, что Das также war des Pudels Kern [ein fahrender Scholast] «надежно работает на других языках :-) По крайней мере, я не знаю, насколько известен Faust на других языках :-) Joey 14 лет назад 0
Это было реальное ядро ​​пуделя, путешествующий ученый, тогда? Казус отвлекает. Проект Gutenberg ist dein Freund: http://www.gutenberg.org/files/14591/14591-h/14591-h.htm Boldewyn 14 лет назад 0
Но я должен согласиться, и LEO.org предлагает «суть вопроса» ;-) Boldewyn 14 лет назад 0
7
jlbartos

Use bc -l, which preloads the math library and the default scale is set to 20.

$ bc -l bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 4/3 1.33333333333333333333 
1
Colin Daly

На случай, если это кому-нибудь поможет, я попытался установить scale=2тихий режим по умолчанию и, похоже, не смог сделать это правильно.

Если я установил BC_ENV_VARS="-q", я получил тихий режим, и если я установил BC_ENV_VARS="~/.bcrc", я мог установить scale=2в этом файле, но я не мог включить тихий режим (возможно, есть способ, но я не мог его найти).

В конце концов я использовал экспорт BC_ENV_ARGS=~/.bcrcscale=2) и совмещенным bcс bc -q.

1
andkore

Чтобы расширить Colin_Daly, используйте BC_ENV_ARGS="-q $HOME/.bcrc", scale=INTочевидно, с .bcrc. Переменная окружения в основном просто застряла сразу после команды bc .

То, что происходит, - то, что -q - просто нормальный параметр командной строки, и $HOME/.bcrcрасширен и передан в bc как первый fileаргумент (может быть многократные аргументы файла). scale=INTэто строка bc, которая является языком программирования. Функционально это эквивалентно запуску bc и вводу scale=INTв приглашении bc. Вы должны использовать $ HOME, а не ~, потому что ~ распознается только тогда, когда он не заключен в кавычки (см. Здесь ), но нам нужно что-то вроде кавычек, чтобы переменная была установлена ​​для обоих слов, а не только до пробела.