TCL / TK如何用科学计数法定义浮点精度

时间:2016-01-20 15:27:56

标签: floating-point tcl tk

如何在TCL中设置以科学格式表示的浮点精度? 我需要设置最大宽度为8个字符。

set number 1.57766e-06
puts $Output "[format "%-.7e" $number]"

它对我不起作用,因为我得到了:

1.5776600e-006

但我会得到:

1.58e-06

我只需要指数项的2位数。

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]
}

文档:formatlassignsplit

答案 1 :(得分:0)

format命令无法控制指数位数,但我可以使用不同的格式获得您想要的结果:

% set number 1.57766e-06
1.57766e-06
% format %.2e $number
1.58e-06

我发现在选择复杂格式时,可以帮助在交互式shell中进行实验。