TCL/TK如何定义科学计数法中的浮点精度
TCL/TK How to define floating point precision in scientific notation
在 TCL 中,如何设置以科学格式表示的浮点数的精度?
我需要设置最大宽度为 8 个字符。
set number 1.57766e-06
puts $Output "[format "%-.7e" $number]"
它对我不起作用,因为我获得了:
1.5776600e-006
但我会得到:
1.58e-06
我只需要 2 位数的指数项。
据我所知,无法指定指数中的位数。解决方法是分别格式化两个部分:
lassign [split $number e] mantissa exponent
set number [format %.2f $mantissa]e[format %+03d $exponent]
此命令可以格式化带和不带指数部分的数字:
(编辑而不是测试和替换指数,可以确保有指数部分。)
proc fmtnum number {
lassign [split [format %.2e $number] e] mantissa exponent
return ${mantissa}e[format %+03d $exponent]
}
format
命令不能让你控制指数位数,但我可以通过使用不同的格式得到你想要的结果:
% set number 1.57766e-06
1.57766e-06
% format %.2e $number
1.58e-06
我发现在选择复杂格式时,在交互式 shell 中进行实验会有所帮助。
在 TCL 中,如何设置以科学格式表示的浮点数的精度? 我需要设置最大宽度为 8 个字符。
set number 1.57766e-06
puts $Output "[format "%-.7e" $number]"
它对我不起作用,因为我获得了:
1.5776600e-006
但我会得到:
1.58e-06
我只需要 2 位数的指数项。
据我所知,无法指定指数中的位数。解决方法是分别格式化两个部分:
lassign [split $number e] mantissa exponent
set number [format %.2f $mantissa]e[format %+03d $exponent]
此命令可以格式化带和不带指数部分的数字:
(编辑而不是测试和替换指数,可以确保有指数部分。)
proc fmtnum number {
lassign [split [format %.2e $number] e] mantissa exponent
return ${mantissa}e[format %+03d $exponent]
}
format
命令不能让你控制指数位数,但我可以通过使用不同的格式得到你想要的结果:
% set number 1.57766e-06
1.57766e-06
% format %.2e $number
1.58e-06
我发现在选择复杂格式时,在交互式 shell 中进行实验会有所帮助。