如何使用Perl将字符串转换为浮点数?

时间:2010-01-07 08:57:22

标签: perl floating-point string-parsing

是否有像int()这样的函数可以将字符串转换为浮点值? 我目前正在使用以下代码:

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

我需要将substr返回的字符串转换为float。

2 个答案:

答案 0 :(得分:17)

只需使用它。在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 :(得分:1)

我不知道您的数据是什么样的,但您确实意识到substr的第三个参数是长度,而不是位置,对吧?此外,第一个位置是0.我怀疑你没有得到你认为你得到的数据,并且它主要是因为你从字符串的开头开始并且只是一个人而无法正常工作。