0

如何从 perl 中的字符串中解析负数?我有这段代码:

print 3 - int("-2");

它给了我5,但我需要3。我该怎么做?

4

4 回答 4

8

Perl 会根据需要自动在字符串和数字之间进行转换;不需要 int() 操作,除非您真的想将浮点数(无论是存储为数字还是字符串)转换为整数。所以你可以这样做:

my $string = "-2";
print 3 - $string;

并得到 5(因为 3 减去负 25)。

于 2010-08-16T14:39:44.563 回答
5

嗯,3 - (-2) 真的是 5。我不太确定你想要实现什么,但如果你想过滤掉负值,为什么不这样做:

$i = int("-2")
$i = ($i < 0 ? 0 : $i);

这会将您的负值变为 0,但让正数通过。

于 2010-08-16T14:39:54.233 回答
1

You are probably thinking of some other function instead of 'int'.

try:

 use List::Util qw 'max';

 ...

 print 3 - max("-2", 0);

if you want to get 3 as result.

Regards

rbo

于 2010-08-16T15:27:22.630 回答
1

它似乎正确解析它。
3 - (-2)5。
如果它错误地将 -2 解析为 2,那么它将输出 3 - 2 = 1。
无论你如何从 3 中添加/减去 2,你永远不会得到 3。

于 2010-08-16T14:43:25.740 回答