Является ли научная нотация интерпретируемой как int или float?
Если я кодирую число в моем коде, используя научную нотацию (например, 1e9
), каков будет тип этого числа (int, long, float, double..)?
Когда значащий или экспоненты являются числами с плавающей запятой, он не может быть целым числом, но что в этом случае?
Ответы
Ответ 1
e
делает его литералом с плавающей запятой. Из JLS (§3.10.2. Литералы с плавающей запятой):
Литерал с плавающей запятой имеет тип float
если он суффикс с буквой ASCII F
или f
; в противном случае его тип double
и он может быть дополнительно суффикс с буквой ASCII D
или d
(§4.2.3).
Следовательно, 1e9
типа double
, as равно 1e9d
. С другой стороны, 1e9f
имеет тип float
.
Ответ 2
Обычно они имеют тип double. Если вы положите f
(из F
) за ним, это поплавок.
double d = 1e9;
float f = 1e9f;
Ответ 3
Он будет считаться литералом с плавающей запятой, и без конечного f
или F
он будет double
.
Целочисленные литералы не могут использовать научную нотацию.
Ответ 4
Это будет "double", если вы не используете "f" или "F", тогда он будет плавать буквально.
Ответ 5
Лучше использовать Double. Поскольку он имеет десятичную плавающую точку, это компьютерная арифметическая система, тесно связанная с научной нотацией. например: 0.000 000 007 51 в научной нотации 7.51 × 10-9. когда вы используете его как int, 7.51 будет 7, а когда вы будете использовать int, оно будет 7.51.