Разобрать отрицательные числа из строки в Perl - PullRequest
0 голосов
/ 16 августа 2010

Как мне разобрать отрицательное число из строки в perl? У меня есть этот кусок кода:

print 3 - int("-2");

Это дает мне 5, но мне нужно 3. Как мне это сделать?

Ответы [ 4 ]

8 голосов
/ 16 августа 2010

Perl автоматически преобразует строки и числа по мере необходимости;нет необходимости в операции int (), если вы на самом деле не хотите преобразовать число с плавающей запятой (хранится ли оно в виде числа или в строке) в целое число.Так что вы можете просто сделать:

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

и получить 5 (потому что 3 минус 2 равно 5).

5 голосов
/ 16 августа 2010

Ну, 3 - (-2) на самом деле 5. Я не совсем уверен, чего вы хотите достичь, но если вы хотите отфильтровать отрицательные значения, почему бы не сделать что-то вроде этого:

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

Это превратит ваши отрицательные значения в 0, но пропустит положительные числа.

1 голос
/ 16 августа 2010

Вы, вероятно, думаете о какой-то другой функции вместо 'int'.

try:

 use List::Util qw 'max';

 ...

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

, если вы хотите получить 3 в качестве результата.

С уважением

rbo

1 голос
/ 16 августа 2010

Кажется, он правильно анализирует.
3 - (-2) - 5.
Если бы он ошибочно анализировал -2 как 2, он бы вывел 3 - 2 = 1.
Независимо от того, как вы добавляете / вычитаете 2 из 3, вы никогда не получите 3.

...