当前位置: 技术问答>java相关
居然1==0.9999999999和5!=4.999999999都成立??????!!!!!!!!!!!!!!!
来源: 互联网 发布时间:2017-04-08
本文导语: class My1 { public static void main(String[] args) { if(1==(3*(1.0/3.0))) { System.out.println("1==0.999999"); } else System.out.println("1!=0.999999"); } } 结果为:1==0.999999 class My { public static void main(String[] args) { ...
class My1
{
public static void main(String[] args)
{
if(1==(3*(1.0/3.0)))
{
System.out.println("1==0.999999");
}
else System.out.println("1!=0.999999");
}
}
结果为:1==0.999999
class My
{
public static void main(String[] args)
{
double d=0.0;
while(d!=5.0)
{
d=d+(1.0/3.0);
System.out.println(""+d);
}
}
}
结果永远不跳出while(){}????
{
public static void main(String[] args)
{
if(1==(3*(1.0/3.0)))
{
System.out.println("1==0.999999");
}
else System.out.println("1!=0.999999");
}
}
结果为:1==0.999999
class My
{
public static void main(String[] args)
{
double d=0.0;
while(d!=5.0)
{
d=d+(1.0/3.0);
System.out.println(""+d);
}
}
}
结果永远不跳出while(){}????
|
up
|
不是!结果为:1==0.999999!打印的信息应该是1==1才对呀!
哈哈!犯了自己欺骗自己的错误!
哈哈!犯了自己欺骗自己的错误!
|
这是cpu的精度问题,这不光是java特有的别的语言也有这个问题
|
1==(3*(1.0/3.0))你的比较运算有问题,在这里,java把3*(1.0/3.0)自动转换成int型,结果进位成了1。第二个也一样。
|
1d!=0.999999999999d
|
你试试这个:
class My1
{
public static void main(String[] args)
{
if(1.0==(3*(1.0/3.0)))
{
System.out.println("1.0==0.999999");
}
else System.out.println("1.0!=0.999999");
}
}
class My
{
public static void main(String[] args)
{
int d=0;
while(d!=5)
{
d=d+(1.0/3.0);
System.out.println(""+d);
}
}
}
class My1
{
public static void main(String[] args)
{
if(1.0==(3*(1.0/3.0)))
{
System.out.println("1.0==0.999999");
}
else System.out.println("1.0!=0.999999");
}
}
class My
{
public static void main(String[] args)
{
int d=0;
while(d!=5)
{
d=d+(1.0/3.0);
System.out.println(""+d);
}
}
}
|
同意 bumaple(蓝枫) 的说法,看来你还是初学
|
你测试的第一个是1==1.99999999999999999999999,而不是你所说的,第二个你不应选择(1.0/3.0),所的结果相差太大!!!
|
还有,你仔细看书,float和double是不可以这样比较相等不相等的。具体的是关于float和double的存储形式的问题了。
|
呵呵。基础问题。就当是规则、公理。
|
程序语言的设计中:
无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“
无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!