用于条件运算符'<'的expr的TCL浮点输出不工作

时间:2015-12-12 14:28:39

标签: tcl expr

我正在使用TCL 8.4虽然以下工作符合预期,

% if { 50.02 < 50.02 } { puts HI }
% set s 50.02
50.02
% if { $s <  50.02 } { puts HI }
% set high 50.02
50.02
% if { $s <  $high } { puts HI }
%
%
% if { 50.02 < $high } { puts HI }

为什么以下不起作用?我真的无法理解这种行为。注意:当$ s为50.03时,它按预期工作。

% set s [ expr 50.01 + 0.01 ]
50.02
% if { $s <  $high } { puts HI }
HI
% set s [ expr double(50.01 + 0.01) ]
50.02
% if { $s <  $high } { puts HI }
HI

1 个答案:

答案 0 :(得分:0)

无法精确存储浮点数。对于数学上应该相等的两个数字,比较结果可能不正确。

我的Tcl 8.6打印(这可以解释你得到的结果):

ipython

有关此内容的更多详情,请访问wiki.tcl.tk: A real problem