科学记数法是解释为int还是float?

时间:2013-03-20 15:01:05

标签: java int scientific-notation

如果我使用科学记数法(例如1e9)对我的代码中的数字进行硬编码,那么该数字的类型是什么(int,long,float,double ..)?

当有效数或指数是浮点数时,它显然不是一个整数,但在上述情况下是什么?

5 个答案:

答案 0 :(得分:14)

e使其成为浮点字面值。来自JLS(§3.10.2. Floating-Point Literals):

  

浮点文字的类型为float,如果后缀为ASCII字母Ff;否则其类型为double,并且可以选择以ASCII字母Dd(§4.2.3)为后缀。

因此,1e9类型为double1e9d1e9f。另一方面,float的类型为{{1}}。

答案 1 :(得分:5)

这些通常是 double 类型。 如果你把fF)放在后面,它就是一个浮点数。

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

答案 2 :(得分:4)

它将被视为floating point literal,没有尾随fF,它将是double

Integer literals不能使用科学记数法。

答案 3 :(得分:3)

除非你使用'f'或'F',否则它将是'double',它将是float literal。

答案 4 :(得分:0)

最好使用Double。因为它具有十进制浮点是与科学记数法密切相关的计算机算术系统。 例如: 0.000 000 007 51 在科学记数法中它是7.51×10-9。 当你将它用作int时,7.51将是7,而当你使用int时它将是7.51。