看一道关于 IEEE-754 浮点数的题,以下代码输出什么?(题目来自 Go101)

A:true true;B:true false;C:false false;D:false true


答案及解析:B

我们看下调试时,x y m n 的值是多少,如下图:

x,y 都是+Inf 正无穷

m,n都是NaN无穷值,m是对-1.0 求二次方

对比结果是:

x==y为ture

m==n为false

为什么呢?


golang中,被除数为0时并不会返回error或者nil,而是返回无穷大,表明数字太大溢出的情况

函数math.IsNaN可以测试一个数值是否是NaN,math.NaN的返回值是一个NaN(无穷大)值。

任何与NaN的比较都会产生假的结果,除了【!=】之外,因为它是【==】的否定

比如:

但是,+Inf和+Inf是相等的,-Inf和-Inf是相等的

所以,本题答案是B