Come ottenere il segno di numero intero in Python


Migliore risposta

from math import copysign

sign = lambda x : copysign(1, x)

restituirà -1 per segno negativo e +1 per segno positivo. puoi sostituire 1 con 1. per ottenere un output in virgola mobile

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

sign(10) # 1

sign(-32) #0

sign(o) #1

sign(10**15) #1L

se hai solo numeri che possono essere rappresentati come 32 interi sarà sufficiente fare x >> 31 ma poi ottieni numeri più grandi di uno per numeri con più di 32 bit (465662 per segno (10 ** 15)). Potresti anche fare x >> 128 per essere più sicuro

Risposta

Ecco una battuta! sign = lambda a: (a>0) - (a<0) OR sign = lambda a: (a>>127)|(not not a) OR sign = lambda a: 1 if a>0 else -1 if a<0 else 0 [utilizzando if-else, OP non ha "t chiesto questo tranne che per i lettori]

Tutte le soluzioni funzionano in entrambi i casi di test Python2 e 3

print sign(12)

print sign(0)

print sign(-13)

print sign(-0)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *