2014-01-03 1 views
0

Я пытаюсь сравнить 2 значения и они кажутся равными, но все еще оцениваются как разные.Базовая ценность Сравнение Оценка не работает в Lua

Что я делаю неправильно? Есть идеи? Я добавил tonumber(), чтобы быть уверенным, что я не конвертировал его в строку где-то.

--Check to see if the current health and the target health differ 
if tonumber(characterStatus.current[ statusColor .. "Health" ]) ~= tonumber(characterStatus.target[ statusColor .. "Health" ]) then 
    --Current and Target Heath amounts differ 

    if statusColor == "monster" then print("\nMonster Amounts Differ ~~~~~~~~~~=" .. characterStatus.current[ statusColor .. "Health" ] .. characterStatus.target[ statusColor .. "Health" ] .. "=") end 
end 

Выход «Монстр Количества Отличаются ~~~~~~~~~~ = 99 =»

+2

значение с плавающей точкой для одного из номеров округляется в сторону на дисплее, но не в ToNumber возможно? Что означает 'print (characterStatus.current [statusColor .." Health "]% 1)' say versus 'print (characterStatus.target [statusColor .." Health "]% 1)'? –

+0

Что-то происходит ... Выход для этого: 7.1054253546001e-015, 0. Я использую math.ceil на некоторых моих вычислениях с этим числом. Будет ли у него что-нибудь с этим? И еще лучше, как я могу это исправить? – Gullie667

ответ

-1

Cleanup ваш код тем меньше риск опечаток, и печатать разницу между этими двумя значениями:

local scCurrent = tonumber(characterStatus.current[ statusColor .. "Health" ]) 
local scTarget = tonumber(characterStatus.target [ statusColor .. "Health" ]) 
if scCurrent ~= scTarget then 
    local scDiff = scCurrent - scTarget 
    if statusColor == "monster" then 
     print(scCurrent, scTarget, scDiff) 
    end 
end 

Вы увидите, что разница между этими двумя значениями. Возможно, вам понадобится использовать string.format для форматирования вывода.

+0

Кто бы ни прокомментировал почему, в противном случае, как я могу улучшить ответ? – Schollii

Смежные вопросы