Während ich mit tcl arbeite, entdecke ich ein solches Verhalten: wenn ich die doppelte Variable umlaufe, verliert sie ihre Präzision.Doppelte Werte verlieren Genauigkeit in tcl nach string list operations
set dbl [expr { double(13.0/7.0) }]
set dbl2 [expr { double(13.0/7.0) }]
foreach a $dbl {
}
if { $dbl == $dbl2 } {
puts "\$dbl == \$dbl2"
} else {
puts "\$dbl != \$dbl2" ;# they will be not equal
}
Wie ich bald herausfinden, wenn Sie bestimmte Vorgänge verwenden, die mit Strings oder Listen arbeiten (zB llength, lindex, string erste, Rsub, foreach, etc.) die doppelte Darstellung der Variable wird mit String-Darstellung ersetzt werden welches erstellt wird oder früher erstellt wurde, basierend auf $tcl_precision
value. Außerdem wird jede Kopie dieser doppelten Variable, die mit dem Befehl set
erstellt wurde, ebenfalls verdorben.
Gibt es eine Möglichkeit, die Genauigkeit nach solchen Operationen in tcl8.4 nicht zu verlieren und ohne tcl_precision
auf einen festen Wert zu zwingen?
P.S. set tcl_precision 0
funktioniert nur in tcl8.5 oder höheren Versionen.