淘先锋技术网

首页 1 2 3 4 5 6 7

Java中提供了两种浮点数类型,分别是float和double。其中,float类型占用四个字节,可以表示六到七位有效数字,并且它的取值范围大约在1.4E-45到3.4E+38之间。而double类型占用八个字节,可以表示十五到十六位有效数字,并且它的取值范围大约在4.9E-324到1.8E+308之间。

float f1 = 3.14f;
double d1 = 3.14159265358979323846;
System.out.println("f1 = " + f1);
System.out.println("d1 = " + d1);

上面的代码中,我们定义了一个float类型的变量f1和一个double类型的变量d1,并给它们赋了一个小数值。需要注意的是,在赋值时,我们需要在小数后面添加一个"f"或"F",这样编译器才能识别出这是一个float类型,否则它默认为double类型。

在进行浮点数计算时,我们需要注意到浮点数的精度问题。由于浮点数的存储方式是基于科学计数法的,因此它们的精度是有限的,我们需要通过一些算法来尽可能地减小误差。

float sumF = 0.0f;
for (int i = 0; i< 10; i++) {
sumF += 0.1f;
}
System.out.println("sumF = " + sumF); // 输出 1.0
double sumD = 0.0;
for (int i = 0; i< 10; i++) {
sumD += 0.1;
}
System.out.println("sumD = " + sumD); // 输出 1.0000000000000007

上面的代码中,我们分别使用了float和double类型的变量来进行累加操作。需要注意的是,由于浮点数的精度问题,当我们使用float类型时,在累加中存在误差,最终得到的结果是1.0而不是我们期望的1.0000001。而当我们使用double类型时,由于它的精度更高,误差变小了,得到的结果是1.0000000000000007。