2010-08-16 19 views
0

Comment analyser un nombre négatif d'une chaîne en perl? J'ai ce morceau de code:Analyser les nombres négatifs de la chaîne en perl

print 3 - int("-2"); 

Il me donne 5, mais je dois avoir 3. Comment fait-on ça?

+15

3 moins négatif 2 * est * 5. –

+0

C'est ce que je reçois pour poster une question sur stackoverflow avant de penser à ce que je demande. Merci à tous pour vos réponses et commentaires! J'aurais supprimé cette question, mais je ne peux pas. –

+2

ce genre de question est important à préserver, car il va arriver à d'autres personnes, aussi! – ysth

Répondre

8

Perl convertira automatiquement les chaînes et les nombres selon les besoins; pas besoin d'une opération int() sauf si vous voulez réellement convertir un nombre à virgule flottante (qu'il soit stocké en tant que nombre ou dans une chaîne) en nombre entier. Alors vous pouvez juste faire:

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

et obtenir 5 (parce que 3 moins négatif 2 est 5).

5

Eh bien, 3 - (-2) est vraiment 5. Je ne suis pas vraiment sûr de ce que vous voulez atteindre, mais si vous voulez filtrer les valeurs négatives, pourquoi ne pas faire quelque chose comme ceci:

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

Cela va transformer vos valeurs négatives à 0 mais laisse passer les nombres positifs.

1

Il semble l'analyser correctement.
3 - (-2) est 5.
Si elle a été par erreur -2 comme analyse pas 2, il aurait alors la sortie 3 - 2 = 1.
Peu importe comment vous ajoutez/Soustrayez 2 3, vous N'obtenez jamais 3.

1

Vous pensez probablement à une autre fonction au lieu de 'int'.

essayer:

use List::Util qw 'max'; 

... 

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

si vous voulez obtenir 3 comme résultat.

Cordialement

RBO