Question

Je l'ai utilisé cela dans d'autres langues, mais lua semble manquer cette fonction assez utile.

Peut-on de vous belles chappies me fournir une fonction Lua pour obtenir le signe du nombre qui lui est passé?

Était-ce utile?

La solution

Vous pouvez vérifier la sign comme ceci:

i = -2
if i == math.abs(i) then -- or i >= 0
   print "positive"
else
   print "negative"
end

Autres conseils

function math.sign(x)
   if x<0 then
     return -1
   elseif x>0 then
     return 1
   else
     return 0
   end
end

Juste au cas où quelqu'un trébuche sur celui :, voici ma version en quelque sorte plus courte:

function sign(x)
  return x>0 and 1 or x<0 and -1 or 0
end

Je pense que l'idée est de revenir 1 ou -1 pour représenter positif ou négatif. Je ne pense pas que vous le voulez revenir 0. pourrait avoir des effets désastreux. Imaginez essayer de changer le signe d'une valeur en multipliant par signe (x) quand il retourne 0. Au lieu de changer le signe que vous souhaitez modifier la valeur à 0.

Je tiens à

function sign(x)
  return (x<0 and -1) or 1
end

Vous pouvez également obtenir le signe d'un nombre comme ceci:

x/ math.abs(x)

Je ne l'utilise que pour les entiers et un depuis Lua ne distingue pas ints de flotteurs, je ne l'utilise pas dans Lua du tout.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top