JS中整数除法的精确性
Exactness of integer division in JS
如果a
和b
是小于Number.MAX_SAFE_INTEGER
的正整数并且a
能被[=11=整除],是否保证console.log(a / b)
将输出一个整数(而不是一个以 .9999999999
结尾的数字)?另外,a % b === 0
会一直成立吗?
至少基于 ECMAScript 标准,applying / operator 的规则提到 该语言不执行整数除法,在典型情况下 计算商并使用 IEEE 754-2008 舍入到最接近的可表示值,与偶数模式相关.
因此,如果分子(在安全范围内)可以被非零分母整除,则结果必然是一个数学整数,因为 IEE 754-2008 可以将其表示为一个。
与%
相同,在这种情况下会产生0。
如果a
和b
是小于Number.MAX_SAFE_INTEGER
的正整数并且a
能被[=11=整除],是否保证console.log(a / b)
将输出一个整数(而不是一个以 .9999999999
结尾的数字)?另外,a % b === 0
会一直成立吗?
至少基于 ECMAScript 标准,applying / operator 的规则提到 该语言不执行整数除法,在典型情况下 计算商并使用 IEEE 754-2008 舍入到最接近的可表示值,与偶数模式相关.
因此,如果分子(在安全范围内)可以被非零分母整除,则结果必然是一个数学整数,因为 IEE 754-2008 可以将其表示为一个。
与%
相同,在这种情况下会产生0。