2013-03-18 7 views
0

Какова функция получения абсолютного значения выражения expr. Например, expr [$a - $b ]. Теперь решение может быть -ve или + положительным числом. Но я хочу получить значение + ve.абсолютная величина в TCL

Я хочу, чтобы использовать его как if { |$diff_a| > 0 & |$diff_b| >0 } { ....

Im использованием Tcl 8.4.

+1

Вы даже задумались об этом? Просто поиск по Google для вашего вопроса озаглавлен ответом и множеством примеров. – atk

+0

abs (x) не работает в tcl 8.4. другое решение похоже, если {$ diff_a> 0} {puts $ diff_a} else {puts - $ diff_a} – user2095095

+0

вы просто опечатали? Или вы действительно пытаетесь использовать abc()? – atk

ответ

0

Вы бы использовать abs функцию:

if {abs($diff_a) > 0 ...} ... 

Обратите внимание, что abs работает только в контексте выражения (например: по телефону expr), но также отметить, что первый аргумент if оценивается как выражение.

abs задокументирован на странице руководства пользователя expr в версиях до tcl 8.4. Начиная с 8.5, он находится на странице руководства mathfunc.

+0

спасибо, просто понял, что он работает. Я пытался установить abs на функцию expr, и это не сработало. Как я могу указать строку рядом с текущей строкой в ​​TCL после этого, если цикл является истинным. (Im чтение файла и выполнение некоторой математической операции в нем) – user2095095

+0

@user Что означает «set abs в функции expr», как в коде? –

1

Я хотел бы добавить, что команда «ABS» может быть использована только в математическом выражении в Tcl, поэтому правильный пример будет:

if {[expr abs($diff_a)] > 0} {...} 

Для получения дополнительной информации, я имею в виду на ехрг человек как указано в ответе выше.

+0

Этот ответ тонко неверен. Хотя это правда, его можно использовать только с математическим выражением, вам не нужно вызывать 'expr' внутри оператора if. 'if' уже рассматривает его первый аргумент как выражение, поэтому' if {abs ($ diff_a)> 0} 'отлично. –

Смежные вопросы