Решил потестировать Wait на 0.00 секунд, а то вдруг какой-то сделает минимальную задержку, которая нужна для реального нанесения урона после срабатывания соответствующего события, либо приведения способности в действие. Но в очередной раз столкнулся с проблемой, которая в практическом смысле для меня ранее роли никакой не играла, но теперь просто хочется разобраться на всякий случай. Проблема в том, что не срабатывает для реальной переменной значение равно, когда ставлю меньше. Вот триггер:
По идее он должен досчитать на экране до 0.100 и остановиться, но он считает всякий раз до 0.110. Почему, ведь в условии указано, что считать дальше только при значении меньше 0.100, а не меньше или равно?
И TriggerSleepAction, и PolledWait минимально выдают 0.10 секунд при всех значениях меньше, но PolledWait при значении 0.00 выдаёт нулевую задержку, за время которой действие не успевает произойти. Если заглянуть в Function list, то там указано, что для всех значений больше 0 сделать то-то. Вот в этом случае больше корректно работает, а не как больше или равно.
И TriggerSleepAction, и PolledWait минимально выдают 0.10 секунд при всех значениях меньше, но PolledWait при значении 0.00 выдаёт нулевую задержку, за время которой действие не успевает произойти. Если заглянуть в Function list, то там указано, что для всех значений больше 0 сделать то-то. Вот в этом случае больше корректно работает, а не как больше или равно.
Принятый ответ
PT153:
PT153:Потому что число 0.01, сложенное 10 раз, меньше 0.1.
Выводи число следующим кодом, где r - твоё real число.call DisplayTimedTextToPlayer(GetLocalPlayer(), 0., 0., 5., R2SW(r, 0, -1))
Hate:у парня проблемы с алгоритмом, в какой вселенной 0.01 * 10 не 0.1?В компьютерной. И да, 0.01 * 10 тоже может быть не равно 0.01 + ... + 0.01. Потому что складываются и умножаются real по-разному.
Hate, надо просто использовать целочисленные, или пользоваться ==, в JASS == округляет числа для сравнения (!= не округляет).
Пороверил разные варианты, сразу упомяну, что с целочисленными всё огонь, просто какие-то другие воспоминания с ними всплывали.
PT153, сначала не понял, зачем мне твоя строчка, она всего лишь выдавала 0.1 вместо 0.100, но тестировал разные варианты и всё прояснилось. Если задавать шаг 1.0, то всё исправно считается до 10.0, если задавать шаг 0.2, то всё считается до 2.2 и отображается ровно, но если сделать шаг 1.01, то вот тут и появляется то, ради чего ты эту строчку дал.
PT153, сначала не понял, зачем мне твоя строчка, она всего лишь выдавала 0.1 вместо 0.100, но тестировал разные варианты и всё прояснилось. Если задавать шаг 1.0, то всё исправно считается до 10.0, если задавать шаг 0.2, то всё считается до 2.2 и отображается ровно, но если сделать шаг 1.01, то вот тут и появляется то, ради чего ты эту строчку дал.
Именно с дробной частью косяк, и теперь не знаю как выбрать лучший ответ, по идее у тебя в каждом комментарии полезная информация. Просто объединил их в итоге.
Hate:
сначала прибавляет, а затем проверяет, потом удивляется почему 0.11
Обычно просто отшучиваюсь на подобные комментарии, но сейчас так всё грустно в нём, что не смогу.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Утром посмотрю.
Ред. PT153
Ред. 8gabriel8
PT153, сначала не понял, зачем мне твоя строчка, она всего лишь выдавала 0.1 вместо 0.100, но тестировал разные варианты и всё прояснилось. Если задавать шаг 1.0, то всё исправно считается до 10.0, если задавать шаг 0.2, то всё считается до 2.2 и отображается ровно, но если сделать шаг 1.01, то вот тут и появляется то, ради чего ты эту строчку дал.
Ред. PT153