Как я могу преобразовать между научной и десятичной записи в Perl? - PullRequest
6 голосов
/ 19 марта 2010

Я знаю, что это полный вопрос новичка, но ответ может быть не очевиден для многих новых программистов. Изначально это не было очевидно для меня, поэтому я искал в Интернете, чтобы найти модули Perl для выполнения этой простой задачи.

Ответы [ 2 ]

18 голосов
/ 19 марта 2010

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)
3 голосов
/ 19 марта 2010

В связанной теме, если вы хотите преобразовать десятичную нотацию в инженерную нотацию (это версия научной нотации), модуль Number :: FormatEng из CPAN удобно:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...