Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 初始化变量的方式是否有差异:float f=100;还是浮动f=100f?_Java_Floating Point - Fatal编程技术网

Java 初始化变量的方式是否有差异:float f=100;还是浮动f=100f?

Java 初始化变量的方式是否有差异:float f=100;还是浮动f=100f?,java,floating-point,Java,Floating Point,爪哇 初始化变量的方式是否存在差异: float f = 100; //implies a cast from integer to float 或 结果会有所不同吗 在这里,我试图用一个非常大的浮动来做,但是看起来精度的损失是一样的 float f1 = (float)2000000000; float f2 = (float)2000000050; float f3 = 2000000000f; float f4 = 2000000050f; System.out.println(f1 +

爪哇

初始化变量的方式是否存在差异:

float f = 100; //implies a cast from integer to float

结果会有所不同吗

在这里,我试图用一个非常大的浮动来做,但是看起来精度的损失是一样的

float f1 = (float)2000000000;
float f2 = (float)2000000050;
float f3 = 2000000000f;
float f4 = 2000000050f;
System.out.println(f1 + " " + f2 + " " + (f1==f2) + " " + f3 + " " + f4 + " "+ (f3==f4) );
->2.0E9 2.0E9正确2.0E9 2.0E9正确


双打有什么不同吗?

我想结果是一样的。用于解释浮点文字的JLS规则是指
valueOf(String s)
方法的
Float
Double
类型;JLS 5.1.2给出了从整数类型到浮点类型的类型转换规则。两者均指“IEEE 754四舍五入至最近模式”。因此,我认为可以安全地假设结果是相同的。

没有双精度。可能重复的是
float f1=1.01161128282547f
浮点f2=1.01161128282547,如果您感兴趣。两者都可以直接编译为相同的字节码操作,但是
f2
接收的常量
(float)1.01161128282547
不同于
f1
接收的
1.01161128282547f
。@PascalCuoq我假设这是因为
float f2=1.01161128282547
经过了一个额外的步骤
valueOf
以概念上的无限精度浮点开始,但是
f1
表达式将无限精度四舍五入为
float
,而
f2
将无限精度四舍五入为
double
,然后是
float
@ajb。十进制数字1.01161128282547是其中一个非常接近两个浮点之间的精确中间值的数字,如果您首先将其四舍五入为双精度
,它会改变结果,而不是直接将其四舍五入为浮点
float f1 = (float)2000000000;
float f2 = (float)2000000050;
float f3 = 2000000000f;
float f4 = 2000000050f;
System.out.println(f1 + " " + f2 + " " + (f1==f2) + " " + f3 + " " + f4 + " "+ (f3==f4) );