让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的语法相同,只是不完全相同。非常恼人的错误。非常感谢。