Shperung 0 Posted February 6, 2012 Report Share Posted February 6, 2012 возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный let res=$s/$pecho "Результат= $res" Quote Link to post Share on other sites
gogi 1 Posted February 6, 2012 Report Share Posted February 6, 2012 Shperung писал(а) Пнд, 06 Февраль 2012 18:52 возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный let res=$s/$pecho "Результат= $res" Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить? / - это не деление, а символ разделения каталогов файловой системы. Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла. Quote Link to post Share on other sites
Sleeping Daemon 0 Posted February 7, 2012 Report Share Posted February 7, 2012 gogi писал(а) Пнд, 06 Февраль 2012 21:47 Shperung писал(а) Пнд, 06 Февраль 2012 18:52 возникла проблема при делении двух чисел - результат всегда целый. Как сделать дробный let res=$s/$pecho "Результат= $res" Подобный код практически на любом шелле выдаст либо ошибку, либо непредсказуемый результат. Сами то пробовали, перед тем как на форум постить? / - это не деление, а символ разделения каталогов файловой системы. Вообще в шэлле (в бэшэ, например), вещественных переменных нет. Есть только строки и целые цисла. Да ну. man bash раздел "ARITHMETIC EVALUATION" Quote Link to post Share on other sites
gogi 1 Posted February 7, 2012 Report Share 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 Link to post Share on other sites
gogi 1 Posted February 7, 2012 Report Share 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 Link to post Share on other sites
Sleeping Daemon 0 Posted February 8, 2012 Report Share 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 Link to post Share on other sites
gogi 1 Posted February 8, 2012 Report Share Posted February 8, 2012 Sleeping Daemon писал(а) Срд, 08 Февраль 2012 08:19 Именно кода. В данном случае / интерпритируется как деление. Так что код верный. А вот ожидемый результат - нет. В случае бэша - да (опять же если переменнные - целочисленные, а не типа 5.00), в sh - ошибку. let - это БАШИЗМ и его обычно избегают. Quote Link to post Share on other sites
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.