在我的考试表中,它指出: x 是一个 double 类型的变量,它是正数,并且 (Math.pow(x,0.5) == Math.sqrt(x)) 由于舍入错误而应为假。但是,我尝试了一些值,结果证明它们都是正确的。对此有解释吗?
1 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
问题是浮点数学是违反直觉的。
一方面是例如特定数字不能正确表示为浮点数。
你写了 0.2,但在运行时,结果显示为 0.1999999....
因此,处理浮点数时的基本规则是永远不要执行 x==y,而是使用epsilon delta,以便 (xy) < epsilon。
换句话说:许多浮点数运算会产生“意外”结果。因此,简单的 == 是不够的。
添加回答
举报
0/150
提交
取消