TCL GUI tcl_precision

时间:2011-09-16 07:00:35

标签: user-interface tcl tk

我正在使用tclsh8.4.19,使用tcl_precision 3打印的文本值最多为5位小数。即当我在tk gui中创建一个小部件时,文本值是uspto 5个小数位,我希望它们只有3位小数。

label $base.main.parameter($i).ParamValue($i,$j)  -text "$myvalue" \
                               -font {times 11 bold} -relief sunken

现在,如果myvalue的值是.3456789,那么打印的文本是.3456789,我想要的值是 要打印的是.345。所以,我想过使用设置tcl_precision 3但没有成功。

我是否需要使用其他东西。请解释。

2 个答案:

答案 0 :(得分:3)

TCL帮助文档警告不要改变tcl_precision;它以现代版本提供,仅用于向后兼容。要实现您需要的功能,format命令将是一个更好的选择:

set a 0.123456    
format %.3lf $a

显示将数字转换为带有三位小数的字符串。

精度的绝对值可以用*替换,在这种情况下,先例取自format命令的下一个参数。

set precesion 3
set v 1.2345678
format %.*lf $precesion $v
1.235

有关使用format命令的完整详细信息,请参见其手册页,可找到一个在线版here

答案 1 :(得分:1)

要将值舍入到特定的小数位数以进行显示,请使用format

set a 0.123654
set rounded [format "%.3f" $a]

您也可以从变量中指定舍入位置:

set a 0.123654
set b 3
set rounded [format "%.*f" $b $a]

虽然它也同样可能(如果你不能强迫$b成为一个整数可能不那么安全)来构造带有替换的格式字符串:

set rounded [format "%.${b}f" $a]