java程序输出电话号码_java程序输出的说明

我遇到了以下程序

class Boolean {

public static void main(String argv[]) {

boolean x;

x = 4.4f == 4.4;

System.out.println(x);

}

}

以下程序的输出为false

但是,如果我们以下列方式编写程序,那么

class Boolean {

public static void main(String argv[]) {

boolean x;

x = 4.5f == 4.5;

System.out.println(x);

}

}

在这种情况下,输出为true

有人可以解释一下为什么吗?

解决方法:

通常不应将浮点值与==运算符进行比较.你应该使用’足够接近’的比较,比如检查值是否有一些小的值:

double epsilon = 0.000001

boolean equal = Math.abs(value1-value2)

在你的例子中,4.4f不等于4.4,因为java将浮点值默认为double类型,即64bit,并将它们的java转换4.4f与double进行比较,这使得它与原始的double值4.4略有不同(因为用二进制代表小数部分的问题).

这是浮点数上的一个很好的link.

标签:java,boolean

来源: https://codeday.me/bug/20190521/1147978.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值