Представление чисел с плавающей точкой в ​​Java в виде шестнадцатеричных чисел - PullRequest
9 голосов
/ 28 декабря 2010

Почему 0x1p3 равно 8.0? Почему 0x1e3 равно 483, а 0x1e3d равно 7741? Это сбивает с толку, поскольку 1e3d равно 1000.0.

Ответы [ 2 ]

8 голосов
/ 28 декабря 2010

0x1e3 и 0x1e3d - шестнадцатеричные целые числа литералы. Обратите внимание, что e и d являются шестнадцатеричными цифрами, а не показателем степени или показателем типа double.

1e3d - десятичный литерал с плавающей точкой . e - показатель степени, d говорит, что это double, а не float.

Обозначение 0x1p3 - это способ выражения литерала с плавающей точкой в ​​шестнадцатеричном формате, как вы можете прочитать в разделе 3.10.2 Спецификации языка Java. Это означает 1 раз 2 к степени 3; показатель степени является двоичным (то есть он равен 2-степени, а не 10-степени).

2 голосов
/ 28 декабря 2010

0x1e3 является шестнадцатеричным для 483, как и 0x1e3d шестнадцатеричным для 7741. e читается как шестнадцатеричное число со значением 14.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...