2013-03-20 3 views
11

Если я кодирую номер в своем коде с использованием научной нотации (например, 1e9), каков будет тип этого числа (int, long, float, double ..)?Является ли научная нотация интерпретируемой как int или float?

Когда значение или показатель степени являются числами с плавающей запятой, оно не может быть целым числом, но что в этом случае?

ответ

11

e делает его литералом с плавающей точкой. Из JLS (§3.10.2. Floating-Point Literals):

с плавающей точкой литерал типа float если он суффиксом с ASCII буквы F или f; в противном случае его тип равен double, и он может быть дополнительно суффикс с буквой ASCII D или d (§4.2.3).

Поэтому 1e9 типа double, как 1e9d. С другой стороны, 1e9f имеет тип float.

4

Обычно они будут иметь тип double. Если вы положили f (F) за ним, это поплавок.

double d = 1e9; 
float f = 1e9f; 
3

Это будет «double», если вы не используете «f» или «F», тогда он будет плавать буквально.

0

Лучше использовать Double. Поскольку он имеет десятичную плавающую точку, это компьютерная арифметическая система, тесно связанная с научной нотацией. например: 0.000 000 007 51 в научных обозначениях 7.51 × 10-9. , когда вы используете его как int, 7.51 будет 7, а когда вы будете использовать int, это будет 7.51.

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