题目
已知 x 和 y 是浮点型数据,欲判断 x 和 y 是否相等,如果使用 if (x == y) 容易产生误差,应写成 if (fabs(x - y) A. 对B. 错
已知 x 和 y 是浮点型数据,欲判断 x 和 y 是否相等,如果使用 if (x == y) 容易产生误差,应写成 if (fabs(x - y) < e) 以减少误差,其中 e 是精度如 1e-6
A. 对
B. 错
题目解答
答案
A. 对
解析
步骤 1:理解浮点数的表示
浮点数在计算机中表示时,由于寄存器的长度有限,无法精确表示所有实数。例如,32位浮点数只能保留1位符号位,8位阶,23位尾数,而64位浮点数为1位符号位,11位阶,52位尾数。因此,浮点数的表示存在一定的误差。
步骤 2:判断浮点数相等的正确方法
由于浮点数的表示存在误差,直接使用 if (x == y) 判断两个浮点数是否相等可能会因为微小的误差而得到错误的结果。因此,正确的做法是使用 if (fabs(x - y) < e) 来判断,其中 e 是一个很小的正数,如 1e-6,表示两个浮点数的差的绝对值小于这个很小的数时,认为它们相等。
步骤 3:选择正确的答案
根据上述分析,使用 if (fabs(x - y) < e) 来判断两个浮点数是否相等是正确的做法,因此本题答案应选A。
浮点数在计算机中表示时,由于寄存器的长度有限,无法精确表示所有实数。例如,32位浮点数只能保留1位符号位,8位阶,23位尾数,而64位浮点数为1位符号位,11位阶,52位尾数。因此,浮点数的表示存在一定的误差。
步骤 2:判断浮点数相等的正确方法
由于浮点数的表示存在误差,直接使用 if (x == y) 判断两个浮点数是否相等可能会因为微小的误差而得到错误的结果。因此,正确的做法是使用 if (fabs(x - y) < e) 来判断,其中 e 是一个很小的正数,如 1e-6,表示两个浮点数的差的绝对值小于这个很小的数时,认为它们相等。
步骤 3:选择正确的答案
根据上述分析,使用 if (fabs(x - y) < e) 来判断两个浮点数是否相等是正确的做法,因此本题答案应选A。