XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
DioD

offline
Опыт: 45,134
Активность:
гонево или нет, но проверить мой почт может любой, даже самый криворукий, в своё время это было раскрыто при написании метода отлова неуязвимости.
Старый 30.11.2012, 09:55
ScorpioT1000
Работаем
offline
Опыт: отключен
значит, обрезается константа, а не сам флоат в памяти
попробуй
real a = 1.1
real b = 0.7
if (a + b) == 1.8 then
echo("win")
endif
Старый 30.11.2012, 13:24
DioD

offline
Опыт: 45,134
Активность:
ну и какой результат?
Старый 30.11.2012, 14:49
ScorpioT1000
Работаем
offline
Опыт: отключен
эхо не будет
Старый 30.11.2012, 14:51
DioD

offline
Опыт: 45,134
Активность:
значит уже как то иначе обрезает\сравнивает.
Старый 30.11.2012, 15:00
ScorpioT1000
Работаем
offline
Опыт: отключен
php float:
Внимание
Точность чисел с плавающей точкой
Числа с плавающей точкой имеют ограниченную точность. Хотя это зависит от операционной системы, в PHP обычно используется формат двойной точности IEEE 754, дающий максимальную относительную ошибку округления порядка 1.11e-16. Неэлементарные арифметические операции могут давать большие ошибки, и, разумеется, необходимо принимать во внимание распространение ошибок при совместном использовании нескольких операций.
Кроме того, рациональные числа, которые могут быть точно представлены в виде чисел с плавающей точкой с основанием 10, например, 0.1 или 0.7, не имеют точного внутреннего представления в качестве чисел с плавающей точкой с основанием 2, вне зависимости от размера мантиссы. Поэтому они и не могут быть преобразованы в их внутреннюю двоичную форму без небольшой потери точности. Это может привести к неожиданным результатам: например, floor((0.1+0.7)*10) скорее всего вернет 7 вместо ожидаемого 8, так как результат внутреннего представления будет чем-то вроде 7.9999999999999991118....
Так что никогда не доверяйте точности чисел с плавающей точкой до последней цифры, и не проверяйте напрямую их равенство. Если вам действительно необходима высокая точность, используйте математические функции произвольной точности и gmp-функции.
>
Старый 30.11.2012, 15:05
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 07:50.