VladOsadchyi
@VladOsadchyi
Студент

Почему in_array(1.7, range(0, 2, 0.1)) вернет false?

Почему in_array(1.7, range(0, 2, 0.1)) вернет false?
А in_array(1.7, range(0, 2, 0.01)) вернет true
Либо я чего то не знаю в php либо в математике
php 5.6
windows 10
  • Вопрос задан
  • 157 просмотров
Решения вопроса 2
glaphire
@glaphire Куратор тега PHP
PHP developer
Числа с плавающей точкой не имеют той точности в двоичном представлении, с которой они визуально выглядят в php в десятичном представлении (даже если указать явно число знаков после запятой). Можно принудительно перевести needle и haystack в строку и попробовать еще раз сравнить.
Есть зарепорченый баг, который описывает эту ситуацию: ссылка
Ответ написан
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Вы не в математике. а в хранении десятичных чисел чего то не понимаете.
1.7 обычно выглядит как то вроде 1.70000000000000003 или 1.700000000001. Так вот вы сравниваете один вид (1.7) с другим, который в массиве.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽