检查浮点数是否为tcl中的整数

时间:2012-11-01 11:31:20

标签: floating-point numbers tcl

我是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中做类似的事情? 如果不是另一种选择 -

  • 取numberTwo的十进制值并检查它是0还是非0

所以需要6.555的东西返回555并取6.0并返回0。 然后我可以这样做:

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

2 个答案:

答案 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]
}