2

私はtclの初心者です。特定の数値が整数かどうかを確認しようとしていますが、これを行う簡単な方法が見つからないようです。

だから私はそれがグリッド上にあるかどうかをチェックしているnumber2を持っています。整数でない場合、グリッド上にありません。

set numberOne 7.5
set grid 2.5
set numberTwo [expr ($numberOne/$grid) ]

if {[string is integer -strict $numberTwo} {
    do something
} else {
    do something else
}

numberTwo が浮動小数点数 (この場合は 3.0) として返されるため、上記のコードは機能しません。

Pythonには次のようなものがあります:

x = 7.5
y = 2.5
z = x/y

if z%1 == 0
   then do something
else
   do something else

Tclで似たようなことをする方法はありますか? そうでない場合、別の選択肢は-

  • numberTwo の 10 進数値を取得し、それが 0 か非 0 かを確認します

したがって、6.555 を受け取るものは 555 を返し、6.0 を受け取って 0 を返します。

if {$value == 0} {then do something} else {do something else}
4

2 に答える 2

3

Tcl数学関数について知らないようです。

if {$value == floor($value)} {

    // ...
}
于 2012-11-01T11:41:14.270 に答える
2

これは実際に多くの人が探している解決策です;)

proc is_float_whole { float } {
  return [expr abs($float - int($float)) > 0 ? 0 : 1]
}
于 2014-08-14T05:48:47.973 に答える