Луа десятичный знак? - PullRequest
5 голосов
/ 23 августа 2009

Я использовал это на других языках, но у lua, похоже, нет этой довольно полезной функции.

Может, кто-нибудь из вас, приятель, предоставит мне функцию lua, чтобы получить знак переданного ей числа?

Ответы [ 5 ]

12 голосов
/ 23 августа 2009
function math.sign(x)
   if x<0 then
     return -1
   elseif x>0 then
     return 1
   else
     return 0
   end
end
8 голосов
/ 13 апреля 2010

На всякий случай, если кто-нибудь наткнется на это: вот моя несколько более короткая версия:

function sign(x)
  return x>0 and 1 or x<0 and -1 or 0
end
3 голосов
/ 03 июня 2010

Я думаю, что идея состоит в том, чтобы вернуть 1 или -1, чтобы представить положительный или отрицательный. Я не думаю, что вы хотели бы, чтобы он вернул 0. Может иметь катастрофические последствия. Представьте себе, что вы пытаетесь изменить знак значения, умножив его на знак (x), когда он возвращает 0. Вместо изменения знака вы измените значение на 0.

Я бы придерживался

function sign(x)
  return (x<0 and -1) or 1
end
0 голосов
/ 09 июля 2012

Вы также можете получить знак числа вроде этого:

x/ math.abs(x)

Я бы использовал его только для целых чисел, и, поскольку Lua не различает целые числа и числа с плавающей запятой, я бы вообще не использовал его в Lua.

0 голосов
/ 23 августа 2009

Вы можете проверить на sign, как это:

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