Perl 如果数字字符串是完整的,如何将其优雅地打印为整数?

Perl 如果数字字符串是完整的,如何将其优雅地打印为整数?,perl,formatting,Perl,Formatting,这里的想法是将像“12.0”这样的数字打印为“12”,但不更改像“14.6”这样的部分数字 当然,有很多方法可以做到这一点,但下面的内容对我来说似乎不够优雅 s\\.0+$表示(“12.0”、“14.6”) $\uu=int($\u)==$\ ux?int($):$代表(“12.0”、“14.6”) 您可以使用以DWIM方式打印的数字: say 0+$_ for @numbers; 或者,如果要使用sprintf格式,可以使用%g模式。这会打印像%e或%f这样的数字。对于小整数,%e的行为类似

这里的想法是将像
“12.0”
这样的数字打印为
“12”
,但不更改像
“14.6”
这样的部分数字

当然,有很多方法可以做到这一点,但下面的内容对我来说似乎不够优雅

  • s\\.0+$表示(“12.0”、“14.6”)

  • $\uu=int($\u)==$\ ux?int($):$代表(“12.0”、“14.6”)


  • 您可以使用以DWIM方式打印的数字:

    say 0+$_ for @numbers;
    
    或者,如果要使用
    sprintf
    格式,可以使用
    %g
    模式。这会打印像
    %e
    %f
    这样的数字。对于小整数,
    %e
    的行为类似于
    %d

    printf "%g\n", $_ for "200000000.0", "12.0", "16.13";
    
    输出:

    2e+08
    12
    16.13
    

    您可以使用以DWIM方式打印的数字:

    say 0+$_ for @numbers;
    
    或者,如果要使用
    sprintf
    格式,可以使用
    %g
    模式。这会打印像
    %e
    %f
    这样的数字。对于小整数,
    %e
    的行为类似于
    %d

    printf "%g\n", $_ for "200000000.0", "12.0", "16.13";
    
    输出:

    2e+08
    12
    16.13
    

    对@numbers说0+$怎么样?对字符串进行NUMIFY,然后打印它们将DWIM@amon:是的,很有效,我已经忘了那个。想知道是否有办法将sprintf转化为提交。对@numbers说0+$怎么样?对字符串进行NUMIFY,然后打印它们将DWIM@amon:是的,很有效,我已经忘了那个。想知道是否有一种方法可以将sprintf转化为提交。是的,就是这样。我知道这很简单!是的,就是这样。我知道这很简单!