我不明白为什么浮点值与double值不同.从下面的示例可以看出,float为同一操作提供的结果与double不同:
public class Test {
public static void main(String[] args) {
double a = 99999.8d;
double b = 99999.65d;
System.out.println(a + b);
float a2 = 99999.8f;
float b2 = 99999.65f;
System.out.println(a2 + b2);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
199999.45
199999.44
Run Code Online (Sandbox Code Playgroud)
你能解释一下浮动和双重之间的差异吗?
Ros*_*son 25
浮点数是32位IEEE 754浮点数.
双精度是64位IEEE 754浮点.
所以这只是一个精度问题,因为分数部分.8和.65都没有终止二进制表示,所以存在一些舍入误差.double具有更高的精度,因此它的舍入误差略小.
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
Jon*_*eet 14
你能解释一下浮动和双重之间的差异吗?
当然.想象一下,你有两个小数类型,一个有五位有效数字,一个有十位数.
您将使用什么价值来表示每种类型的pi?在这两种情况下,你都试图接近一个你无法准确表达的数字 - 但你最终会得到相同的价值,不是吗?
对于float和double- 它们都是二进制浮点类型,但double具有更高的精度float.
Tha*_*ani 11
public class Main {
public static void main(String[] args) {
float a=12.6664287277627762f;
double b=12.6664287277627762;
System.out.println(a);
System.out.println(b);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
12.666429
12.666428727762776
Run Code Online (Sandbox Code Playgroud)
float可以处理大约7位小数.双精度可以处理大约16位小数.
双打的精度是浮子的两倍.因此,它们具有较小的舍入误差.
浮点数(通常)为32位,双64(通常为).因此浮点数的数量多于双数的舍入误差.
| 归档时间: |
|
| 查看次数: |
39180 次 |
| 最近记录: |