js数字类型比较,这个问题比较有意思

今天做个关于折扣的小功能,其中遇到了数字的对比。我一开始想当然的以为parseInt(10.0)跟parseFloat(10.0)是不相等的,即

alert(parseInt(10.0)===parseFloat(10.0))

的结果是false,毕竟是类型不同,可是实际情况确实输出true。

后来想大概是这样比的是数值,加上typeof就好了:

alert(typeof(parseInt(10.0))===typeof(parseFloat(10.0)))

可是输出的依然是true。后来才想起来不管是什么类型的数字,其 typeof()之后的类型都是number。

去网上找类似的问题也没找到响应的结果。

后来我就想起一个办法,就是把 parseInt(10.0)的结果跟 parseFloat(10.0)转换成字符串,用字符串进行对比就能比出来了。

在这个问题上我犯的一个错误就是曲解了 Int跟 Float的含义,把这两个当成了跟字符串、数字等平级的类型了。实则不然。其实不管是在js中还是现实生活中,不管是1还是1.0还是1.00,虽然他们是不同类型的数字,但他们都是数字,怎么对比他们的值也是相同的。我们之所以能直观的区别他们是不同的,那是因为他们的表现形式不同。所以用到js里,把他们转化成字符串,就能从表现形式上来区分他们的不同了。

未经允许不得转载:前端撸码笔记 » js数字类型比较,这个问题比较有意思

上一篇:

下一篇: