2013-09-27 44 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)...... –