Comment obtenir le signe dun entier en Python


Meilleure réponse

from math import copysign

sign = lambda x : copysign(1, x)

renverra -1 pour le signe négatif et +1 pour le signe positif. vous pouvez remplacer 1 par 1. pour obtenir une sortie en virgule flottante

sign = lambda x : (x >> 63) +1

sign(10) # 1

sign(-32) #0

sign(o) #1

sign(10**15) #1L

si vous navez que des nombres qui peuvent être représentés par 32 entiers, il suffira de faire x >> 31 mais alors vous obtenez des nombres plus grands que un pour les nombres de plus de 32 bits (465662 pour le signe (10 ** 15)). Vous pouvez également faire x >> 128 pour être plus sûr

Réponse

Voici une doublure! sign = lambda a: (a>0) - (a<0) OU sign = lambda a: (a>>127)|(not not a) OU sign = lambda a: 1 if a>0 else -1 if a<0 else 0 [en utilisant if-else, OP na pas demandé ceci mais pour les lecteurs]

Toutes les solutions fonctionnent dans les cas de test Python2 et 3

print sign(12)

print sign(0)

print sign(-13)

print sign(-0)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *