2013-09-27 40 views
0

我想计算一个包括指数在内的表达式。如何在TCL中避免浮点太小误差

但是当我尝试评估像一个表达式: exp(-1.0e3)

我得到一个错误消息说: "floating point value too small to represent"

我怎样才能避免这种情况?

我只想得到0.0当值太小,无法表示。

+0

你使用的是什么Tcl版本?我在Tcl 8.5.11上没有这个错误。 – Jerry

回答

1

你使用的是什么版本的Tcl?你在哪个平台上?它为我(在OSX):

$ tclsh8.4 
% expr exp(-1.0e3) 
0.0 
% info patchlevel 
8.4.19 
$ tclsh8.5 
% expr exp(-1.0e3) 
0.0 
% info patchlevel 
8.5.9 
$ tclsh8.6 
% expr exp(-1.0e3) 
0.0 
% info patchlevel 
8.6.1 

它也工作得很好,当我把这个值在一个变量和使用,并且我已经检查Tcl将其理解为一个(中等)较大的负数和一些更大的负数(-1e100)。

+0

谢谢。它在最近的版本中工作。我使用的版本太旧(8.0和8.3)。 – syk

+0

哦,他们真的很老。我记得大约在15年前把8.0调回,而8.4在今年夏天刚刚发布了最终补丁(8.4.20)...... –