我是tcl的新手。我试图检查一个给定的数字是否是一个整数,但似乎找不到一个简单的方法来做到这一点。
所以我有一个数字2,它正在检查它是否在网格上。如果不是整数,则它不在网格上。
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中做类似的事情? 如果不是另一种选择 -
所以需要6.555的东西返回555并取6.0并返回0。 然后我可以这样做:
if {$value == 0} {then do something} else {do something else}
答案 0 :(得分:3)
您似乎可能不了解Tcl math functions。
if {$value == floor($value)} {
// ...
}
答案 1 :(得分:1)
这实际上是很多人都在寻找的解决方案;)
proc is_float_whole { float } {
return [expr abs($float - int($float)) > 0 ? 0 : 1]
}