Задать вопрос
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
  • Вопрос задан
  • 160 просмотров
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 2
glaphire
@glaphire Куратор тега PHP
PHP developer
Числа с плавающей точкой не имеют той точности в двоичном представлении, с которой они визуально выглядят в php в десятичном представлении (даже если указать явно число знаков после запятой). Можно принудительно перевести needle и haystack в строку и попробовать еще раз сравнить.
Есть зарепорченый баг, который описывает эту ситуацию: ссылка
Ответ написан
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Вы не в математике. а в хранении десятичных чисел чего то не понимаете.
1.7 обычно выглядит как то вроде 1.70000000000000003 или 1.700000000001. Так вот вы сравниваете один вид (1.7) с другим, который в массиве.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽