为了账号安全,请及时绑定邮箱和手机立即绑定

在Java中操作和比较浮点

在Java中操作和比较浮点

元芳怎么了 2019-10-21 12:51:13
在Java中,浮点运算没有精确表示。例如下面的java代码:float a = 1.2; float b= 3.0;float c = a * b; if(c == 3.6){    System.out.println("c is 3.6");} else {    System.out.println("c is not 3.6");} 打印“ c不是3.6”。我对超过3位小数(#。###)的精度不感兴趣。如何处理这个问题以乘以浮点数并可靠地进行比较?
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

它是浮点数不应该像进行比较的一般规则(A == B) ,而是喜欢(Math.abs(a-b) < delta)在那里三角洲是一个小数目。


十进制形式的具有固定位数的浮点值不必具有二进制形式的固定位数。


另外为清楚起见:


虽然严格的==浮点数的比较具有非常小的实际意义上说,严格的<和>比较,相反,是一个有效的用例(实施例-当某些值超过阈值的逻辑触发:(val > threshold) && panic();)


查看完整回答
反对 回复 2019-10-21
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

如果您对固定精度数字感兴趣,则应使用固定精度类型,例如BigDecimal,而不是固有的近似(尽管精度高)类型,例如float。关于堆栈溢出,有许多类似的问题,涉及许多语言,对此进行了更详细的介绍。


查看完整回答
反对 回复 2019-10-21
  • 3 回答
  • 0 关注
  • 213 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信