Jump to content
Sign in to follow this  
Shperung

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

Recommended Posts

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

Да ну.

man bash

раздел "ARITHMETIC EVALUATION"

Share this post


Link to post
Share on other sites

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"

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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"

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...