如何在Perl中使用科学和十进制表示法进行转换?

时间:2010-03-19 01:20:55

标签: perl decimal notation scientific-notation

我知道这是一个全新的问题,但对许多新程序员来说,答案可能并不明显。这对我来说最初并不明显,所以我在互联网上搜索Perl模块来完成这个简单的任务。

2 个答案:

答案 0 :(得分:18)

sprintf可以解决问题

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";

生成此输出:

Decimal (3.33333333333333) to scientific (3.333333e+000)

Scientific (1.23456789e+001) to decimal (12.3456789)

答案 1 :(得分:3)

在相关主题上,如果要在十进制表示法和engineering notation(科学计数法的一个版本)之间进行转换,CPAN的Number::FormatEng模块很方便:

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