Разбор научного целочисленного представления в perl - PullRequest
4 голосов
/ 12 сентября 2011

Какой самый элегантный способ для анализа целого числа, указанного в научном представлении, то есть у меня есть входной файл со строками типа

value=1.04738e+06

Конечно, я могу сопоставить все компоненты (начальная цифра, десятичные позиции, экспонента) и рассчитать результат, но мне кажется, есть более прямой путь.

Ответы [ 2 ]

10 голосов
/ 12 сентября 2011
% perl -e 'print "1.04738e+06" + 0'
1047380

Вам просто нужно привести его к числу, и Perl будет DWIM.

1 голос
/ 12 сентября 2011

К вашему сведению: looks_like_number() из Scalar::Util может пригодиться.

#!/usr/bin/env perl

use strict;
use warnings;

use Scalar::Util qw( looks_like_number );

my $line = "value=1.04738e+06";
my ( $tag, $value ) = split /\s*=\s*/, $line, 2;

if( looks_like_number( $value ) ){
  $value = 0 + $value;
}
print "$tag=$value\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...