让perl以非科学符号打印

让perl以非科学符号打印,perl,scientific-notation,Perl,Scientific Notation,我在跑步 ./script.pl 69032 text.txt 其中text.txt包含 1 29 239 6 我越来越 1 29 239 8.69162127708889e-05 作为输出,但我只希望最后一个数字是 1 29 239 .0000869162127708889 这是我的剧本 $percent=$ARGV[0]; shift; while(<>){ my $temp = $_; my ($num, $start,

我在跑步

./script.pl 69032 text.txt
其中text.txt包含

1   29  239 6
我越来越

1   29  239 8.69162127708889e-05
作为输出,但我只希望最后一个数字是

1   29  239 .0000869162127708889
这是我的剧本

$percent=$ARGV[0];
shift;
while(<>){
        my $temp = $_;
        my ($num, $start, $stop, $exp) = split("\t", $temp);
        if( defined($exp)){
                print $num,"\t",$start,"\t",$stop,"\t",$exp/$percent,"\n";
        }
}
$percent=$ARGV[0];
转移;
while(){
我的$temp=$\;
我的($num、$start、$stop、$exp)=拆分(“\t”、$temp);
如果(定义为($exp)){
打印$num、“\t”、$start、“\t”、$stop、“\t”、$exp/$percent、“\n”;
}
}
用于格式化打印。中给出了格式说明符的详细信息

“…”
中的字符串用于指定格式。其余部分是字符串中每个
%
说明符使用的变量列表,通常按照它们的顺序排列。
sprintf
返回一个字符串,而
printf
打印到
STDOUT
,或者打印到另一个文件句柄(如果作为第一个参数,
printf($fh…,@vars)
)。这是最古老、最好的旧工具之一

上面我们有:一个整数
%d
,然后是一个制表符
\t
,然后是相同的两倍,然后是一个浮点数,要在总宽度
10
的字段中打印(包括小数点和可能的符号),该点后有
8位数。整数在输出中占用所需的空间——一个用于
1
,三个用于
239
。如果要排列输出,可以指定字段的最小宽度

printf("%3d\t%3d\t%3d\t%10.8f\n", $num, $start, $stop, $exp/$percent);
现在,每个整数将占用三个空格,在右侧对齐。要在左侧对齐,请使用
%-3d
。对于
001
,要有前导零,您可以说是
%03d
。字符串也可以在固定宽度的字段中打印,因此

printf("%4s %6s %6s %12s\n", qw(num start stop factor));
printf("%4d %6d %6d %12.8f\n", $num, $start, $stop, $exp/$percent);
印刷品

num start stop factor 1 29 239 0.00008692 num开始停止因子 1 29 239 0.00008692 在上面,我为一个舒适的布局选择了字段宽度,并使用文字空间作为它们之间的分隔符。(如果条目不符合制表位,制表符可能会扰乱视觉对齐。如果这进入数据文件,即使它们也不是解析的糖分,但对将来的解析没有影响。)如果使用逗号,则生成CSV文件

我们能做的远远不止这些。它用于从精确格式转换到打印数据文件或体面(ASCII)报告的任何操作。
sprintf
页面详细介绍了许多示例。

用于格式化打印。中给出了格式说明符的详细信息

“…”
中的字符串用于指定格式。其余部分是字符串中每个
%
说明符使用的变量列表,通常按照它们的顺序排列。
sprintf
返回一个字符串,而
printf
打印到
STDOUT
,或者打印到另一个文件句柄(如果作为第一个参数,
printf($fh…,@vars)
)。这是最古老、最好的旧工具之一

上面我们有:一个整数
%d
,然后是一个制表符
\t
,然后是相同的两倍,然后是一个浮点数,要在总宽度
10
的字段中打印(包括小数点和可能的符号),该点后有
8位数。整数在输出中占用所需的空间——一个用于
1
,三个用于
239
。如果要排列输出,可以指定字段的最小宽度

printf("%3d\t%3d\t%3d\t%10.8f\n", $num, $start, $stop, $exp/$percent);
现在,每个整数将占用三个空格,在右侧对齐。要在左侧对齐,请使用
%-3d
。对于
001
,要有前导零,您可以说是
%03d
。字符串也可以在固定宽度的字段中打印,因此

printf("%4s %6s %6s %12s\n", qw(num start stop factor));
printf("%4d %6d %6d %12.8f\n", $num, $start, $stop, $exp/$percent);
印刷品

num start stop factor 1 29 239 0.00008692 num开始停止因子 1 29 239 0.00008692 在上面,我为一个舒适的布局选择了字段宽度,并使用文字空间作为它们之间的分隔符。(如果条目不符合制表位,制表符可能会扰乱视觉对齐。如果这进入数据文件,即使它们也不是解析的糖分,但对将来的解析没有影响。)如果使用逗号,则生成CSV文件


我们能做的远远不止这些。它用于从精确格式转换到打印数据文件或体面(ASCII)报告的任何操作。
sprintf
页面详细介绍了许多示例。

看一看。看一看。@Borodin非常感谢。这些天我经常使用matlab。。。它只是拉住了我(不是我)。(f)printf的语法相同,只是不完全相同。非常恼人的错误。谢谢你。@Borodin非常感谢你。这些天我经常使用matlab。。。它只是拉住了我(不是我)。(f)printf的语法相同,只是不完全相同。非常恼人的错误。非常感谢。