Я вот с такой странностью столкнулся (правда не в сталкере, а в интерпретаторе луа версии 5.0.3. Вот имеется тупейший код для округления, но работающий только с положительными числами:
function math_round( roundIn , roundDig ) -- первый аргумент - число которое надо округлить, второй аргумент - количество символов после запятой.
local mul = math.pow( 10, roundDig )
return ( math.floor( ( roundIn * mul ) + 0.5 )/mul )
end
Теперь вызываем этот код не только для положительных чисел но и для отрицательных:
local digit = 1.23456789
print( math_round( digit, 0 ) )
print( math_round( digit, 1 ) )
print( math_round( digit, 2 ) )
print( math_round( digit, 3 ) )
print( math_round( digit, 4 ) )
print( math_round( digit, 5 ) )
print( math_round( -digit, 0 ) )
print( math_round( -digit, 1 ) )
print( math_round( -digit, 2 ) )
print( math_round( -digit, 3 ) )
print( math_round( -digit, 4 ) )
print( math_round( -digit, 5 ) )
А теперь смотрим вывод и выпадаем в осадок:
user@cjayho:~/Desktop$ lua ./22.lua
1
1.2
1.23
1.235
1.2346
1.23457
-1
-1.2
-1.23
-1.235
-1.2346
-1.23457
То есть несмотря на то, что код работает с отрицательными числами некорректно, при выполнении кода получаются корректные результаты. Вот у меня и вопрос - wtf o_O?