java int double 加减法 基本类型运算问题

System.out.println(150.0+0+183.28-0-183.28-150.0);
输出结果:-2.8421709430404007E-14
为什么?
System.out.println(((150.00)+0.00+(183.28))-(0.00+(183.28)+(150.00)));
输出结果0.0;
为什么?只是加了个括号.差别这么大.
用System.out.println((long)(150.0+0+183.28-0-183.28-150.0));
输出的结果是0;
为什么?为什么我的问题里面给出的是个那么长的数字而不是0?

1.-2.8421709430404007E-14表示-2.8421709430404007乘以10的-14次方,计算机能准确表示十进制的整数,但不能准确表示十进制小数。System.out.println(150.0+0+183.28-0-183.28-150.0);150.0+0+183.28-0-183.28-150.0的结果为0.00000000000...,只不过你的输出结果为double型,精度比较高,没有超出打印函数(println之类的)的默认精度而已。

2.System.out.println(((150.00)+0.00+(183.28))-(0.00+(183.28)+(150.00)));中将((150.00)+0.00+(183.28))作为个运算单元,二个括号内的运算的结果肯定一样,与精度无关。结果当然为0。

3.用System.out.println((long)(150.0+0+183.28-0-183.28-150.0));(150.0+0+183.28-0-183.28-150.0)的结果为0.00000000...,转换成long,舍弃小数位,结果自然为0;

4.System.out.println(150.0F+0+183.28F-0-183.28F-150.0F); 运算结果为float型,超出打印函数(println之类的)的默认精度,截取下来为0。

不知道解释的你满意不?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-26
java.lang.UnsatisfiedLinkError:是因为找不到正确的库文件

两个原因:
1。可能是库文件路径不正确。
2。可能是库文件无法正确加载,例如缺少相应的依赖库(可以用vc自带的depends看一下库文件)
第2个回答  2010-11-15
float类型的数值有个后缀:F,如果没有后缀F,那么默认为double。double类型的数值也可以使用后缀D。
改成这样就可以了 System.out.println(150.0F+0+183.28F-0-183.28F-150.0F);
第3个回答  2010-11-15
System.out.println((long)(150.0+0+183.28-0-183.28-150.0));
你试试这个看行不!因为我没装JDK,现在运行不了。
第4个回答  2010-11-15
-2.8421709430404007E-14 科学计数法啊.

若不想这个样子
可以
参考
http://z.baidu.com/question/28886413.html?si=2

参考资料:http://z.baidu.com/question/28886413.html?si=2

相似回答