请看这个测试,为什么?

scbb2001 2002-10-22 04:06:10
public class test
{

public static void main(String[] args)
{
double a = 0.07;
double b = 0.02;
double c = (a + b);
double d = 0.09;

System.out.println(c);
System.out.println( c - d);
}
}
...全文
90 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jaderiver 2002-10-23
  • 打赏
  • 举报
回复
public class test
{

public static void main(String[] args)
{
double a = 0.07;
double b = 0.02;
double c = (a + b);
double d = 0.09;

System.out.println((float)c);
System.out.println((int)(c - d));
}
}
killinger 2002-10-23
  • 打赏
  • 举报
回复
先把每个数乘以一个大的数转化成整数,之后计算完后再除回来
scbb2001 2002-10-23
  • 打赏
  • 举报
回复
我的意思是怎样解决这个问题,double类型的数据怎样精确表示啊
ronghui 2002-10-23
  • 打赏
  • 举报
回复
如果你只是想判断两个浮点数是否相等,只有判断他们的差的绝对值是否小于一个足够小的数。

就这么回事。
playgb 2002-10-22
  • 打赏
  • 举报
回复
二进制与十进制之间转换的误差.
青蛙王子 2002-10-22
  • 打赏
  • 举报
回复
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-1998 Microsoft Corp.

D:\>c:

C:\>javac *.java

C:\>java test
0.09000000000000001
1.3877787807814457E-17

C:\>



看什么?输出结果完全正常!
Anubis12345 2002-10-22
  • 打赏
  • 举报
回复
呵呵,你学过 计算方法 没有??
在计算机中的浮点数都是近似的数字。因为有些十进制数字是二进制数字无法表示的,只能做一定程度的近似。
所以就会有现在这样的结果,这不是JAVA的错,而是现代的个人计算机还不能达到非常高的精度。
还有 用 double 类型的时候,用 ++ -- 等运算符都用可能出现问题
arjila 2002-10-22
  • 打赏
  • 举报
回复
看什么,没结果啊

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧