2016-10-22 2 views
-2

Ok я получил пару значений здесь:Каковы эти цифры и каков их тип?

'F', 0xf, 070, 70L, 77e-1f, 7.7f, 7.77e1, 77.7 

Я знаю, что 'F' является char и 70L имеет тип long. Кроме того, я знаю, что 0xf является шестнадцатеричным (справа?) И что 070 является восьмеричным. Но что это за другие цифры? И почему, черт возьми, 77.7double, а не float?

+1

* Почему, черт возьми, вы включили то, что уже знаете? :) –

+1

* «И почему, черт возьми, 77,7 удваивается, а не плавает?» * Исследование не ваша сила, не так ли? https://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.2. По крайней мере, у вас был «жалкий взлет» другого плохого пользователя :). – Tom

+0

Я не понимаю. Так что 77,7 - это не то же самое, что 77,7? – Geddi

ответ

1

Что вы ищете является this

  • О 77.7:

с плавающей точкой литерал типа поплавка, если он заканчивается буквой F или F; в противном случае его тип двойной, и он может опционально заканчивать буквой D или d .

  • 0xf не типа hex. Нет типа hex. Это просто int wirtten in hex. Точно так же, как 070 является int, написанным в восьмеричном.

  • Литерал 77e-1f, очевидно, поплавок, так как он заканчивается f.

  • e является exponent т.е. 77e-1f фактически 77 * 10^(-1) или 7.7. Литерал 7.77e1 является двойной по той же причине 77.7 является двойной, это просто, что 7.77e1 равно 7.77 * 10^1 = 77.7.

+0

OKOK Большое спасибо :) – Geddi

+0

@Pshemo Вы правы, конечно. исправлено. – Malt

0

только два, которые вы не объяснить себя:

7.7f 

Это означает, что е поплавок - это указывает на то, что это не должно быть двойной буквальным, но хорошо, поплавок один! Вы видите, что по умолчанию любые литералы с плавающей запятой автоматически имеют тип double, вам нужно «f», чтобы обеспечить «меньший» тип float.

И

77e-1f 

использует научную нотацию, см here, например, для дальнейших объяснений.

0

И почему, черт возьми, 77,7 двойной и не плавает?

Float номер должен быть обозначен с f на конце, но двойных номера не требует d на конце.

77e-1f является поплавок номер 77 к власти 10^-1, поэтому она равна 7.7.

То же самое с 7.77e1 == 77.7

+1

Но мы говорим о Ява. И в Java буквальное число 070 равно восьмеричному. Всегда. – GhostCat

+0

Спасибо, я удалил эту часть. – Defozo

+0

Спасибо большое :) – Geddi

0

В Java числовых литералов, которые содержат точки имеют тип двойной по умолчанию. Если вы хотите поплавок, вы можете добавить f.

Номера, содержащие e, представлены в экспоненциальной или научной нотации, но я не буду объяснять это здесь, потому что это не имеет никакого отношения к программированию.

0

77e-1 означает следующее: 77 это номер-мультипликатором, e (или E) означает base 10 и -1 означает показатель степени.

Таким образом, результат 77 формулой (10 питание от -1), или с помощью 77.1, я. е. 7.7

Название этой нотации научная или логарифмическая и хорош для очень больших или очень маленьких чисел, е. г. 1 million = 1.000.000 может быть выражен как 1e6

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