public class A {
static boolean equal(float a, float b) {
return a == b;
}
public static void main(String[] args) {
System.out.println(equal(3.14159267f,3.14159268f));//结果为true
double d = 2.0;
double d2 = 1.1;
System.out.println(d - d2);//结果为0.8999999999999999
}
}
为什么是上面的结果?
static boolean equal(float a, float b) {
return a == b;
}
public static void main(String[] args) {
System.out.println(equal(3.14159267f,3.14159268f));//结果为true
double d = 2.0;
double d2 = 1.1;
System.out.println(d - d2);//结果为0.8999999999999999
}
}
为什么是上面的结果?
解决方案 »
- java 复数类。定义的四个 方法 声明无效需要返回类型。请各位大侠,前辈帮忙看看
- 多线程处理的问题,如何保证几个不同线程处理的顺序呢?
- java中有将二进制转换成十进制的方法吗?
- If "String[ ]args" is a valid syntax, why "int( )func" is invalid?
- jsp-jb-sql高级技术群 QQ:18954667
- 关于DataInputStream和DataOutStream的小问题...........................
- 请问Applet交互和页面下拉框谁快谁慢?
- 在jbuilder中调用xml需要做什么设置?
- 关于java的GridBagConstraints布局问题??
- 为什么连不上数据库,急
- 数值问题
- MANIFEST.MF中怎样设置程序启动内存大小
比如计算机做2.0/3的时候在底层是怎么做的呢?先将数转化为浮点数,然后用CPU中的除法器做的(根据不同的CPU有不同的实现方法),像这种浮点数的运算在最后一位的时候都会遇到取舍,更具不同的取舍方法,得到的结果有可能不一样的。不仅如此,在二进制数与浮点数的转换中间也肯定会有取舍的。相信通过bytecode传过去的数也是通过vm再传到cpu这样算的,所以呢~~~~解决方案:用java实现浮点数的精确计算
论坛里应该有很多这类问题的帖子了 搜一下