How can I convert between scientific and decimal notation in Perl?

前端 未结 2 1073
刺人心
刺人心 2021-01-18 07:04

I know this is a total newbie question, but the answer may not be obvious to many new programmers. It wasn\'t initially obvious to me so I scoured the Internet looking for

相关标签:
2条回答
  • 2021-01-18 07:31

    sprintf does the trick

    use strict;
    use warnings;
    
    my $decimal_notation = 10 / 3;
    my $scientific_notation = sprintf("%e", $decimal_notation);
    
    print "Decimal ($decimal_notation) to scientific ($scientific_notation)\n\n";
    
    $scientific_notation = "1.23456789e+001";
    $decimal_notation = sprintf("%.10g", $scientific_notation);
    
    print "Scientific ($scientific_notation) to decimal ($decimal_notation)\n\n";
    

    generates this output:

    Decimal (3.33333333333333) to scientific (3.333333e+000)
    
    Scientific (1.23456789e+001) to decimal (12.3456789)
    
    0 讨论(0)
  • 2021-01-18 07:46

    On a related theme, if you want to convert between decimal notation and engineering notation (which is a version of scientific notation), the Number::FormatEng module from CPAN is handy:

    use Number::FormatEng qw(:all);
    print format_eng(1234);     # prints 1.234e3
    print format_pref(-0.035);  # prints -35m
    unformat_pref('1.23T');     # returns 1.23e+12
    
    0 讨论(0)
提交回复
热议问题