Как я могу преобразовать строку в float с помощью Perl? - PullRequest
2 голосов
/ 07 января 2010

Есть ли какая-нибудь функция типа int(), которая может преобразовать строку в значение с плавающей запятой? В настоящее время я использую следующий код:

$input=int(substr($line,1,index($line,",")-1));

Мне нужно преобразовать строку, возвращаемую substr, в число с плавающей точкой.

Ответы [ 2 ]

17 голосов
/ 07 января 2010

Просто используйте это. В Perl строка, похожая на число, является числом.

Теперь, если вы хотите быть уверенным, что это число , прежде чем использовать его, тогда в Scalar::Util есть служебный метод, который делает это:

use Scalar::Util qw/looks_like_number/;

$input=substr($line,1,index($line,",")-1);

if (looks_like_number($input)) {
    $input += 1; # use it as a number!
}

На основе примера ввода, оставленного вами в комментариях, более надежный метод извлечения числа:

$line =~ /([^\[\],]+)/; # <-- match anything not square brackets or commas
$input = $1;            # <-- extract match
1 голос
/ 07 января 2010

Я не знаю, как выглядят ваши данные, но вы понимаете, что третий аргумент substr - это длина, а не позиция, верно? Кроме того, первая позиция равна 0. Я подозреваю, что вы не получаете данные, которые, как вы думаете, вы получаете, и это в основном случайно работает, потому что вы начинаете с начала строки и отключены только на единицу.

...