LINUX.ORG.RU

[Korn shell] Округление.


0

1

Не получается.

echo "scale=10; $((sin(90)))" | bc -l
Как правильно запись должна выглядеть?



Последнее исправление: Phaser (всего исправлений: 1)

Ответ на: комментарий от Phaser

Не по-русски я понимаю плохо.

И еще не понимаю, чего вы хотите. Зачем, если ваш ksh считает синусы, да еще и в градусах, передавать выхлоп в bc?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

В корне есть своя система работы тригонометрическими функциями.

echo $((sin(90)))

0.89399666360055789


Как округлить вот это число.

Phaser
() автор топика
Ответ на: комментарий от Eddy_Em
Come on please help me Dr. Dick
I need your love - I feel so sick
I need a kick
And you're so big
Oh doctor please - deep deep deeper
Phaser
() автор топика
Ответ на: комментарий от Eddy_Em

> А что, в нем нет средств округления?
Это я тебя спрашиваю.

Phaser
() автор топика

Придумалось только вот так:

echo "0.123212312" | sed 's/\([[:digit:]]*\.[[:digit:]]\{,3\}\).*/\1/'
0.123
И функция:
function round(){ [ "$2" = "" ] && NUM=3 || NUM=$2; echo $1 | sed "s/\([[:digit:]]*\.[[:digit:]]\{,$NUM\}\).*/\1/"; }

round 0.31223142334
0.312

round 0.31223142334 5
0.31223

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от tensai_cirno

Shell лучше для этого не использовать? :)

Phaser
() автор топика

Короче, дополнил свой .bashrc удобными функциями:

function round(){ [ "$2" = "" ] && NUM=3 || NUM=$2; echo $1 | sed "s/\([[:digit:]]*\.[[:digit:]]\{,$NUM\}\).*/\1/"; }
function sin(){ echo "scale=10; s($1*a(1)/45);" | bc -l; }
function cos(){ echo "scale=10; c($1*a(1)/45);" | bc -l; }
function tan(){ echo "scale=10; arg=$1*a(1)/45; s(arg)/c(arg);" | bc -l; }
function ln(){ echo "scale=10; l($1);" | bc -l; }
function log(){ echo "scale=10; l($1)/l(10);" | bc -l; }
function pow(){ echo "scale=10; $1^$2;" | bc -l; }
function sqrt(){ echo "scale=10; sqrt($1);" | bc -l; }
function exp(){ echo "scale=10; e($1);" | bc -l; }
alias pi="echo 'scale=10; a(1)*4;' | bc -l"
export pi=$(pi)
Теперь в командной строке можно делать простенькие вычисления.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

А. Я просто вводил типа sin(90) - так не получалось.

Phaser
() автор топика
Ответ на: комментарий от Eddy_Em

Эту часть кода легче выполнить на питоне. Не зря я его все-таки учил. Толстую книжку в 1000 страниц осилил.

Phaser
() автор топика

>Как правильно запись должна выглядеть?

без bc

или без корня

или вобще без того и другого, раз вы книжку осилили (кстати, книжка видимо про пайтон, а языка «питон» не бывает)

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.