2013-03-18 2 views
0

expr 문의 절대 값을 얻는 함수는 무엇입니까? 예 : expr [$a - $b ]. 이제 솔루션은 -ve 또는 + 양수가 될 수 있습니다. 하지만 나는 + ve 가치를 내고 싶다.TCL의 절대 값

나는 TCL 8.4 사용 if { |$diff_a| > 0 & |$diff_b| >0 } { ....

임처럼 사용하고 싶습니다.

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

abs 만 식의 맥락에서 작동합니다

+1

당신도 이걸 봤어? 귀하의 질문 제목에 대한 인터넷 검색과 답변이 많이 나와 있습니다. – atk

+0

abs (x)는 tcl 8.4에서 작동하지 않습니다. 다른 해결책은 {$ diff_a> 0} {puts $ diff_a} else {puts - $ diff_a} – user2095095

+0

과 같은 경우입니다. 아니면 abc()을 실제로 사용하고 계십니까? – atk

답변

0

당신은 abs 기능을 사용합니다 (예 : expr를 호출하여)을, 또한 if의 첫 번째 인수가로 평가되고 있습니다 표현.

abs은 tcl 8.4 이전 버전의 expr 매뉴얼 페이지에 설명되어 있습니다. 8.5부터는 mathfunc 매뉴얼 페이지에 있습니다.

는 내가 추가하고 싶습니다
+0

덕분에 그냥 작동 깨달았습니다. 나는 expr 함수에 abs를 설정하려고 시도했는데 작동하지 않았다. 이 루프가 참인 후 TCL에서 현재 줄 옆에 한 줄을 가리키는 방법은 무엇입니까? (파일을 읽고 그것에 수학 연산을 수행함) – user2095095

+0

@user "expr 함수에서 abs를 설정"은 코드에서와 유사합니까? –

1

는 '복근'명령 만 티클의 수식 내에서 사용, 그렇게 할 수있는 올바른 예는 다음과 같습니다 자세한 내용

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

나는 EXPR 남자를 참조 위의 대답에 지정된 페이지.

+0

이 답변은 미묘하게 잘못되었습니다. 사실이지만 수학 표현식에서만 사용할 수 있습니다. if 문에서'expr'을 호출 할 필요가 없습니다. 'if'는 이미 첫 번째 인자를 표현식으로 취급하므로'if {abs ($ diff_a)> 0}'가 완벽하게 유효합니다. –