看一道关于 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