Float vs double Math Java

Qui*_*ion 6 java floating-point precision

以下是否存在精度差异(假设a和b的值可以在浮点数中表示而不会丢失精度).

有花车:

float a;
float b;
double result = 1 + a*b;
Run Code Online (Sandbox Code Playgroud)

双打:

double a;
double b;
double result = 1 + a*b;
Run Code Online (Sandbox Code Playgroud)

And*_*ner 6

简单的例子:

float a = 16777217;  // Largest int exactly representable in a float.
float b = 16777217;
System.out.println((double)(1 + a*b));

double c = 16777217;
double d = 16777217;
System.out.println(1 + c*d);
Run Code Online (Sandbox Code Playgroud)

输出(Ideone):

2.81474976710656E14
2.8147501026509E14
Run Code Online (Sandbox Code Playgroud)

所以是的,使用精度有所下降float.