13

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

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

4

5 回答 5

16

e使其成为浮点文字。来自 JLS(第 3.10.2 节。浮点文字):

如果浮点文字以 ASCII 字母或;float为后缀,则它是类型。否则它的类型是,并且可以选择以 ASCII 字母或(§4.2.3) 为后缀。FfdoubleDd

因此,1e9类型double, as is 1e9d。另一方面,1e9f是类型float

于 2013-03-20T15:03:17.893 回答
5

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

double d = 1e9; 
float f = 1e9f;
于 2013-03-20T15:02:20.877 回答
4

它将被视为浮点文字,并且没有尾随f,否则F它将是double.

整数文字不能使用科学记数法。

于 2013-03-20T15:03:15.033 回答
3

除非您使用 'f' 或 'F' 否则它将是 'double' ,那么它将是浮点文字。

于 2013-03-20T15:04:52.183 回答
0

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

于 2013-03-20T15:29:51.203 回答