如何在 TCL 中设置以科学格式表示的浮点数的精度?我需要将最大宽度设置为 8 个字符。
set number 1.57766e-06
puts $Output "[format "%-.7e" $number]"
它对我不起作用,因为我获得了:
1.5776600e-006
但我会得到:
1.58e-06
我只想要指数项的 2 位数字。
AFAIK不能指定指数中的位数。解决方法是分别设置两个部分的格式:
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 中进行实验可以帮助。