3*0.1 == 0.3 将会返回什么?true 还是 false?

3*0.1 == 0.3 返回 true还是 false

返回false因为有些浮点数不能完全精确的表示出来。

例如:

 public static void main(String[] args) {
        System.out.println(3 * 0.1);
        System.out.println(4 * 0.1);
        System.out.println(3 * 0.1 == 0.3);
        System.out.println(13 * 0.1 == 1.3);
        System.out.println(9 * 0.1 == 0.9);
        System.out.println(3 * 0.1 / 3);
    }    

        结果是:
        0.30000000000000004
        0.4
        false
        true
        true
        0.10000000000000002

知乎上的一个解释

### 回答1: 这个表达式的结果是 False。原因是 .1 和 .2 在计算机内部以二进制表示时是无限循环小数,而计算机只能用有限的位数来表示小数,因此在计算时会有一定的误差。这个误差会导致 .1 + .2 的结果与 .3 不完全相等,因此表达式的结果是 False。 ### 回答2: 在使用Python编程时,我们经常需要使用print()函数来输出结果。在这里,我们考虑一个比较特殊的情况:print(0.1 + 0.2 == 0.3)。这里我们使用了加法运算符来计算0.1和0.2的和,然后判断它是否等于0.3。 在Python中,浮点数是用二进制表示的。而二进制数,并不能准确地表示某些十进制小数,比如0.1和0.2。这是因为在二进制表示中,它们会变成无限循环的序列。因此,在进行浮点数运算时,可能会存在精度误差。 换句话说,当我们执行print(0.1 + 0.2 == 0.3)时,预期的输出结果应该是True,因为0.1 + 0.2实际上等于0.30000000000000004,而0.3也等于0.30000000000000004,两者相等。 但是,由于Python的浮点数精度问题,实际上输出结果可能是False。这也就是说,我们不能完全依赖浮点数的精确性,而需要使用一些技巧来避免这种情况的发生。 有时候,我们可以使用函数round()来对浮点数进行四舍五入,再进行比较。例如,可以写成print(round(0.1 + 0.2, 10) == round(0.3, 10)),其中第二个参数表示保留小数点后多少位。 总之,要谨慎处理浮点数的精度问题,在编写Python程序时需要考虑到这一点。 ### 回答3: Python中print(0.1 + 0.2 == 0.3)的结果是False,这是因为在计算机中无法精确表示10进制浮点数,而在Python中浮点数默认采用IEEE 754标准的双精度浮点数,即64位。 在十进制下,0.1 + 0.2 = 0.3,但在二进制下,0.1和0.2无法精确表示,因此计算机会近似表示这两个数字。具体来说,0.1在二进制下无限循环,而计算机只能用64位来近似表示,因此实际上计算机中的0.1是一个无限循环的小数,但已经用64位近似表示了。同样的情况也出现在0.2上。 这导致当我们将0.1和0.2相加时,结果并不等于0.3,而是接近于0.30000000000000004。因此,当我们将0.1 + 0.2与0.3相比较时,结果是False。 为了避免这种浮点数误差,在Python中可以使用Decimal模块来进行精确的十进制计算,或者使用round()函数来四舍五入至指定精度。例如,我们可以这样编写代码: from decimal import Decimal a = Decimal('0.1') b = Decimal('0.2') c = Decimal('0.3') print(a + b == c) # 输出True 或者使用round()函数: a = 0.1 b = 0.2 c = 0.3 print(round(a + b, 10) == round(c, 10)) # 输出True 总之,由于浮点数的精度限制,我们在编写Python代码时,要注意避免在浮点数运算中出现精度误差。当需要进行精确计算时,应该使用Decimal模块或者round函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值