搜索

首页  >  问答  >  正文

js小数相加问题?

console.log(0.1 + 0.2 == 0.3) // false
console.log(0.2 + 0.2 == 0.4)
console.log(0.1 + 0.3 == 0.4)
console.log(0.13 + 0.2 == 0.33)
console.log(0.3 + 0.4 == 0.7)
console.log(1.1 + 0.2 == 1.3)

以上代码为什么只有第一条输出false,而其他都是true ? 我知道 0.1 + 0.2 = 0.30000000000000004 ,但我想知道为什么。

看透不说透看透不说透2817 天前2282

全部回复(3)我来回复

  • phpcn_u37517

    phpcn_u375172017-11-22 18:01:43

    我就来看看

    回复
    0
  • 数据分析师

    数据分析师2017-10-01 00:53:59

    js小数相加问题?-PHP中文网问答-js小数相加问题?-PHP中文网问答

    围观一下哦,学习一下。

    回复
    0
  • 迷茫

    迷茫2017-03-17 09:16:40

    假设十进制数字为整数10,在计算机中表示方式为 : 1010,二进制转换十进制的方法为:

    1 * 2^3 + 0 * 2^2 + 1* 2^1 + 0* 2^0 = 10

    即为:

    8 + 0 + 2 + 0 = 10

    那么小数的表示方法,假设10进制数为0.5,在计算机中表示为0.1,因为计算机只有0和1这两位,而换算方法为:

    1 * 2^-1 = 0.5

    同理可见计算机能表示的浮点数有哪些 :

    0.5 = 1 * 2^-1
    0.75 = 1 * 2^-1 +1 * 2^-2
    0.25 = 0 * 2^-1 +1 * 2^-2
    0.875 = 1 * 2^-1 +1 * 2^-2 + 1 * 2^-3
    0.9375 = 1 * 2^-1 +1 * 2^-2 + 1 * 2^-3 + 1 * 2^-4

    同理可见,0.2在计算机中表示为 :

    0.00110011000110...

    后续位数你可以自己算,所以在计算机中0.2的表示方法只是一个无线接近于0.2的小数,但永远无法精确的表示出0.2,所以0.2 + 0.1 ≈ 0.3,而永远不会等于0.3


    回复
    1
  • 取消回复