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 的十进制值并检查它是 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 回答