如何在Perl中将字符串转换为数字(浮点数)

Bal*_*ala 6 perl

如何在Perl中将字符串转换为数字?

例:

$str = '10.0500000';
$number = $str * 1;  # 10.05
Run Code Online (Sandbox Code Playgroud)

还有另一种标准方法可以从'10 .0500000'获得10.05而不是乘以1吗?

dax*_*xim 12

我正在回答字面问题.也许您想格式化显示的数字.

两个表达

sprintf '%.2f', '10.0500000'
sprintf '%.2f', 10.0500000
Run Code Online (Sandbox Code Playgroud)

返回字符串10.05.

  • 我不明白这如何回答这个问题。问题询问如何将字符串转换为浮点数,而不是相反。 (2认同)

小智 8

在Perl中,标量不是键入的.相反,运营商是.所以,当你$a . "1"使用$a字符串时,当$a + 1你使用$a数字时.Perl将尽力弄清楚标量对于给定操作的意义.因此,对于大多数情况,"转换"是为您隐式完成的.

如果您需要验证您的字符串是否确实可以转换,请使用正则表达式.

以下是关于如何做到这一点的一个话题:http://www.regular-expressions.info/floatingpoint.html

  • 使用正则表达式检测数字是一个Perl常见问题:[如何确定标量是否为数字/整数/整数/浮点数?](http://learn.perl.org/faq/perlfaq4.html#How-do- I-确定-是否-A-标量是一个数 - 全整数浮子) (4认同)

Art*_*eev 6

好吧,你也可以加0 :-)

你不应该太在意Perl中标量的内部表示,除非你做了一些奇怪的事情(如果你是的话请告诉我们).无论看起来像一个数字都是一个数字.

或者你需要检查字符串是否是"真实"数字?嗯,实际上,任何字符串都是.有一篇很好的文章它是 关于这个主题的数字.该链接是Wayback Machine,因为原件已从中删除perl.com.