在我的考试表中它指出:x是类型为double的正数变量,并且由于四舍五入关系,(Math.pow(x,0.5)== Math.sqrt(x))应该为false错误。但是,我尝试了一些值,但事实证明它们都是正确的。对此有解释吗?
答案 0 :(得分:1)
问题在于浮点数学是违反直觉的。
例如,一方面是特定数字不能正确表示为浮点数。
您编写了0.2,但是在运行时,结果显示为0.1999999 ....
因此,处理浮点数的基本规则是永远不要执行x == y,而要使用 epsilon delta,从而使(x-y) 换句话说:许多带有浮点数的操作会给出“意外的”结果。因此,简单的==是不够的。