Перейти к содержанию

Дробная часть


Рекомендуемые сообщения

Shperung писал(а) Пнд, 06 Февраль 2012 18:52

возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный

let res=$s/$pecho "Результат= $res"

Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить?

/ - это не деление, а символ разделения каталогов файловой системы.

Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла.

Ссылка на комментарий
Поделиться на другие сайты

gogi писал(а) Пнд, 06 Февраль 2012 21:47

Shperung писал(а) Пнд, 06 Февраль 2012 18:52
возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный

let res=$s/$pecho "Результат= $res"

Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить?

/ - это не деление, а символ разделения каталогов файловой системы.

Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла.

Да ну.

man bash

раздел "ARITHMETIC EVALUATION"

Ссылка на комментарий
Поделиться на другие сайты

Sleeping Daemon писал(а) Втр, 07 Февраль 2012 08:23

gogi писал(а) Пнд, 06 Февраль 2012 21:47
Shperung писал(а) Пнд, 06 Февраль 2012 18:52
возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный

let res=$s/$pecho "Результат= $res"

Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить?

/ - это не деление, а символ разделения каталогов файловой системы.

Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла.

Да ну.

man bash

раздел "ARITHMETIC EVALUATION"

И что там написано о вещественных переменных? Может еще и пример приведете.

Сторонние утилиты типа bc не в зачет.

PS. Если, конечно, Ваше возражение касается только кода

let res=$s/$pecho "Результат= $res"

о моего ответа о "/" - то это, действительно, сарказм.

Ссылка на комментарий
Поделиться на другие сайты

cat sh

let res=1.0/2.0

echo "Результат= $res"

gg@c-1:~$ zsh sh

Результат= 0.5000000000

Бэш даст 0. Остальные (sh, dash, csh, tcsh - ошибку)

Замечу, 1) правильные скрипты пишутся под sh. 2) В большинстве дистрибутивов линукс скрипты инициализации обрабатываются dash.

Ну а zsh и здесь вне конкуренции Smile

Ссылка на комментарий
Поделиться на другие сайты

gogi писал(а) Втр, 07 Февраль 2012 18:42

Sleeping Daemon писал(а) Втр, 07 Февраль 2012 08:23
gogi писал(а) Пнд, 06 Февраль 2012 21:47
Shperung писал(а) Пнд, 06 Февраль 2012 18:52
возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный

let res=$s/$pecho "Результат= $res"

Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить?

/ - это не деление, а символ разделения каталогов файловой системы.

Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла.

Да ну.

man bash

раздел "ARITHMETIC EVALUATION"

И что там написано о вещественных переменных? Может еще и пример приведете.

Сторонние утилиты типа bc не в зачет.

PS. Если, конечно, Ваше возражение касается только кода

let res=$s/$pecho "Результат= $res"

о моего ответа о "/" - то это, действительно, сарказм.

Именно кода. В данном случае / интерпритируется как деление. Так что код верный. А вот ожидемый результат - нет.

Ссылка на комментарий
Поделиться на другие сайты

Sleeping Daemon писал(а) Срд, 08 Февраль 2012 08:19

Именно кода. В данном случае / интерпритируется как деление. Так что код верный. А вот ожидемый результат - нет.

В случае бэша - да (опять же если переменнные - целочисленные, а не типа 5.00), в sh - ошибку. let - это БАШИЗМ и его обычно избегают.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...