User interface TCL GUI TCL_精度
我使用的是tclsh8.4.19,使用tcl_precision 3打印的文本值最多有5位小数。i、 e当我在tk gui中创建一个小部件时,文本值是uspto 5位小数,我希望它们最多只能是3位小数User interface TCL GUI TCL_精度,user-interface,tcl,tk,User Interface,Tcl,Tk,我使用的是tclsh8.4.19,使用tcl_precision 3打印的文本值最多有5位小数。i、 e当我在tk gui中创建一个小部件时,文本值是uspto 5位小数,我希望它们最多只能是3位小数 label $base.main.parameter($i).ParamValue($i,$j) -text "$myvalue" \ -font {times 11 bold} -relief sunken 现在,如果myvalu
label $base.main.parameter($i).ParamValue($i,$j) -text "$myvalue" \
-font {times 11 bold} -relief sunken
现在,如果myvalue的值是.3456789,那么打印的文本是.3456789,并且是我想要的值
要打印的是.345。因此,我曾想过使用设置tcl_precision 3,但没有成功
我需要用别的东西吗。请解释一下 TCL帮助文档警告不要更改TCL\u精度;它在现代版本中提供,仅用于向后兼容。要实现所需操作,format命令将是一个更好的选择:
set a 0.123456
format %.3lf $a
显示如何将数字转换为小数点后三位的字符串
精度的绝对值可以替换为*,在这种情况下,前置值取自format命令的下一个参数
set precesion 3
set v 1.2345678
format %.*lf $precesion $v
1.235
有关使用format命令的详细信息,请参见其手册页面,可以找到一个在线版本TCL帮助文档警告不要更改TCL_精度;它在现代版本中提供,仅用于向后兼容。要实现所需操作,format命令将是一个更好的选择:
set a 0.123456
format %.3lf $a
显示如何将数字转换为小数点后三位的字符串
精度的绝对值可以替换为*,在这种情况下,前置值取自format命令的下一个参数
set precesion 3
set v 1.2345678
format %.*lf $precesion $v
1.235
有关使用format命令的完整详细信息,请参见其手册页,可以找到一个联机版本要将值舍入到特定的小数位数以供显示,请使用format 也可以从变量中指定舍入位置:
set a 0.123654
set b 3
set rounded [format "%.*f" $b $a]
但是,如果不能强制$b为整数来构造带替换的格式字符串,那么也同样可能不太安全:
set rounded [format "%.${b}f" $a]
要将值舍入到特定的小数位数以显示,请使用format 也可以从变量中指定舍入位置:
set a 0.123654
set b 3
set rounded [format "%.*f" $b $a]
但是,如果不能强制$b为整数来构造带替换的格式字符串,那么也同样可能不太安全:
set rounded [format "%.${b}f" $a]
如果我希望它是这样的:设置为0.123456;b组3;格式%。$blf$a。有什么方法可以让它这样工作吗?如果我希望它是这样的:设置一个0.123456;b组3;格式%。$blf$a。有什么方法可以让它这样工作吗?如果你能帮助的话,不要碰tcl_precision;其影响是微妙的,可能会令人惊讶。对于99.99%的脚本来说,默认值已经足够了。事实上,如果您使用的是Tcl 8.5,那么Tcl_精度的默认设置是神奇的,即使用尽可能少的十进制数字来精确表示二进制浮点数。这几乎总是人们想要的,除非他们不知道二进制IEEE浮点的一些限制;其影响是微妙的,可能会令人惊讶。对于99.99%的脚本来说,默认值已经足够了。事实上,如果您使用的是Tcl 8.5,那么Tcl_精度的默认设置是神奇的,即使用尽可能少的十进制数字来精确表示二进制浮点数。这几乎总是人们想要的,除非他们不知道二进制IEEE浮点的一些限制。