Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface TCL GUI TCL_精度_User Interface_Tcl_Tk - Fatal编程技术网

User interface TCL GUI TCL_精度

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

我使用的是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
现在,如果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浮点的一些限制。