Shperung Posted February 6, 2012 Report Posted February 6, 2012 возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный let res=$s/$pecho "Результат= $res" Quote
gogi Posted February 6, 2012 Report Posted February 6, 2012 Shperung писал(а) Пнд, 06 Февраль 2012 18:52 возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный let res=$s/$pecho "Результат= $res" Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить? / - это не деление, а символ разделения каталогов файловой системы. Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла. Quote
Sleeping Daemon Posted February 7, 2012 Report Posted February 7, 2012 gogi писал(а) Пнд, 06 Февраль 2012 21:47 Shperung писал(а) Пнд, 06 Февраль 2012 18:52 возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный let res=$s/$pecho "Результат= $res" Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить? / - это не деление, а символ разделения каталогов файловой системы. Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла. Да ну. man bash раздел "ARITHMETIC EVALUATION" Quote
gogi Posted February 7, 2012 Report Posted February 7, 2012 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" о моего ответа о "/" - то это, действительно, сарказм. Quote
gogi Posted February 7, 2012 Report Posted February 7, 2012 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 и здесь вне конкуренции Quote
Sleeping Daemon Posted February 8, 2012 Report Posted February 8, 2012 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" о моего ответа о "/" - то это, действительно, сарказм. Именно кода. В данном случае / интерпритируется как деление. Так что код верный. А вот ожидемый результат - нет. Quote
gogi Posted February 8, 2012 Report Posted February 8, 2012 Sleeping Daemon писал(а) Срд, 08 Февраль 2012 08:19 Именно кода. В данном случае / интерпритируется как деление. Так что код верный. А вот ожидемый результат - нет. В случае бэша - да (опять же если переменнные - целочисленные, а не типа 5.00), в sh - ошибку. let - это БАШИЗМ и его обычно избегают. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.