Страницы

Поиск по вопросам

среда, 27 ноября 2019 г.

Что за число 0x1.fffffffffffffp-2?


В классе Math присутствует метод:
 public static long round(double a) {
    if (a != 0x1.fffffffffffffp-2) // greatest double value less than 0.5
        return (long)floor(a + 0.5d);
    else
        return 0;
}

Подскажите пожалуйста что это за число такое 0x1.fffffffffffffp-2. Никак не пойму :)    


Ответы

Ответ 1



Это представленное в шестнадцатиричном виде число 0.49999999999999994 - самое большо число меньшее 0.5, которое может представить Java. 0x1.fffffffffffff - это 1.9999999999999998 в шестнадцатеричном виде. p-2 означает, что оно умножено на 2^-2 = 0.25 т. е. разделено на 4. Это как экспонента (например, 1.23e-5), только для шестнадцатеричных чисел.

Комментариев нет:

Отправить комментарий