我正在使用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
答案 0 :(得分:0)
无法精确存储浮点数。对于数学上应该相等的两个数字,比较结果可能不正确。
我的Tcl 8.6打印(这可以解释你得到的结果):
ipython
有关此内容的更多详情,请访问wiki.tcl.tk: A real problem