Числовые литералы

1

Я читал книгу о Java, и я нашел следующие моменты неясными, пожалуйста, помогите мне:

  1. Для целочисленного литерала, выраженного в любой базе, отличной от базы 10 (0b, 0, 0x), можно использовать суффикс L, который обозначает Long?

  2. Для с плавающей запятой мы можем использовать любую другую базу, отличную от десятичной? Если да, мы можем указать float или double, используя F или D для других баз, кроме 10? Если да, с другими основаниями, чем 10, мы можем использовать научную нотацию или разрешить только десятичную точку?

  • 2
    Почему бы не попробовать это самостоятельно?
  • 0
    я пробовал двоичные числа с плавающей запятой, но у меня было сообщение от компилятора: двоичные литералы могут использоваться только с исходным уровнем 1.7 или выше, что это значит
Показать ещё 2 комментария
Теги:
literals

1 ответ

2
Лучший ответ

1) Да, это возможно и для шестнадцатеричного, восьмеричного и двоичного. См. Jls-3.10.1

2) Да, вы можете использовать шестнадцатеричную нотацию, но вы ограничены двоичными показателями и требуется указать экспоненту. См. Jls-3.10.2

Примеры:

0xFF.Ap0d
0xFF.1p0f
0xFF.Ap1d
0xFF.Ap-1f
0xFF.Ap-1
0x.1p16

Если вы печатаете эти литералы с помощью System.out.println, вы получаете:

255.625
255.0625
511.25
127.8125
63.90625
4096.0

Значение двоичного показателя выглядит следующим образом:

Значение перед p или P умножается на 2^z где z - целое число после p (или P). Целое число находится в десятичном формате. Например, 0xFF.1Ap0101d обозначает 255.1015625 * 2^101.

  • 0
    спасибо, но я не понимаю двоичную часть экспоненты в 2) ....., BinaryExponent: BinaryExponentIndicator SignedInteger здесь SignedInteger ссылается только на те цифры, которые 0,1 ?? мы можем написать, например, 0xFF.1Ap0101d
  • 0
    @Eng_Boody: я отредактировал свой ответ. SignedInteger в десятичном формате. «двоичный» означает базу 2 в этом случае.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню