2015-06-10 2 views
3

Для числа -5 x 10^-1, т.е. -0.5, я мог бы написать,Как написать шестнадцатеричный литерал с плавающей запятой в java?

-5E-1f или -50E-2f или -0.05E+1F

как "десятичной плавающей точкой буквального" в Java.

Если же число записывается в «шестнадцатеричном плавающей буквальным», я нашел его, как

-0X32p-2f что неправильно. Это значение равно -25.0. Я рассмотрел 50 как 0x32 и вышел с этими обозначениями.

Как узнать, как записывать вышеуказанное значение -5 x 10^-1 в шестнадцатеричном литерале с плавающей запятой?

+0

'50E-2f' означает' 50 * 10^-2'. '0x32p-2f' означает' 0x32 * 16^-2' (где^означает «здесь»). –

+1

@OliverCharlesworth это не '16^-2', это' 2^-2'. – Jesper

+0

@OliverCharlesworth '0x32 * 16^-2' переходит в' 0.19', но 'java.exe' показывает как' 0.25' – overexchange

ответ

5

См section 3.10.2 в спецификации языка Java:

В случае шестнадцатеричной с плавающей точкой буквальной, показателем является двоичным показателя; это сила 2, а не мощность 10, как в десятичных числах с плавающей запятой.

So 0x32p-2f средства 50 раз к власти -2, а не времена 10 к мощности -2.

Шестнадцатеричный float Литерал, который представляет 0.5, будет 0x1p-1f.

+0

Я полагаюсь на людей, которые читают JLS и говорят на видео. Я не могу читать JLS сейчас. Спасибо за ваш ответ. – overexchange

Смежные вопросы