Lua segno decimale?
Domanda
Ho usato questo in altre lingue, ma lua sembra mancare questa funzione piuttosto utile.
Potrebbe uno di voi belle chappies me fornire una funzione di lua per ottenere il segno del numero passato a esso?
Soluzione
È possibile verificare la sign
in questo modo:
i = -2
if i == math.abs(i) then -- or i >= 0
print "positive"
else
print "negative"
end
Altri suggerimenti
function math.sign(x)
if x<0 then
return -1
elseif x>0 then
return 1
else
return 0
end
end
Proprio nel caso qualcuno inciampa su questo :, ecco la mia versione in qualche modo più breve:
function sign(x)
return x>0 and 1 or x<0 and -1 or 0
end
Credo che l'idea è di ritorno 1 o -1 per rappresentare positivo o negativo. Non credo che si vorrebbe è tornare 0. potrebbe avere effetti disastrosi. Immaginate di provare a cambiare il segno di un valore moltiplicandolo per segno (x) quando ritorna 0. Invece di cambiare il segno che ci si modifica il valore a 0.
mi piacerebbe restare con
function sign(x)
return (x<0 and -1) or 1
end
È anche possibile ottenere il segno di un numero come questo:
x/ math.abs(x)
mi piacerebbe usare solo quella per gli interi e dal Lua non distingue interi da carri, io non userei in Lua a tutti.