如何在TCL中设置以科学格式表示的浮点精度? 我需要设置最大宽度为8个字符。
set number 1.57766e-06
puts $Output "[format "%-.7e" $number]"
它对我不起作用,因为我得到了:
1.5776600e-006
但我会得到:
1.58e-06
我只需要指数项的2位数。
答案 0 :(得分:1)
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]
}
答案 1 :(得分:0)
format
命令无法控制指数位数,但我可以使用不同的格式获得您想要的结果:
% set number 1.57766e-06
1.57766e-06
% format %.2e $number
1.58e-06
我发现在选择复杂格式时,可以帮助在交互式shell中进行实验。