1. PHP / Говнокод #17291

    +149

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    var_dump(0); // int(0), OK
    var_dump(0x0); // int(0), OK
    var_dump(00); // int(0), OK
    var_dump(0.0); // double(0), OK
    var_dump(0.0e1); // double(0), OK
    var_dump(0e1); // double(0), WTF?

    PHP воспринимает экспоненциальную нотацию как double, будьте начеку

    Запостил: volter9, 11 Декабря 2014

    Комментарии (14) RSS

    • А разве есть проблема? Ну кроме сравнения строк через ==, естественно.
      Ответить
    • PHP - будьте начеку!
      Ответить
    • Это научная форма записи взятая из стандарта IEEE описывающего как записывать числа с плавающей запятой (т.н. double precision floating point - отсюда и double). Так что тут все как раз в порядке.
      Ответить
      • Эх, а в PHP.net в документации про это не слово (или может быть я плохо читал?)

        Наверное надо прочитать все эти стандарты что в следующий раз такого фейла не было.
        Ответить
      • Кстати, да. Питон:

        In [34]: 1e2
        Out[34]: 100.0
        Ответить
    • И в чем же проблема? Во всех языках экспоненциальная нотация подразумевает float/double.
      Ответить
      • В php люди настолько привыкли к WTF, что нормальное поведение вызывает WTF.
        Ответить
    • автор петух!
      Ответить

    Добавить комментарий