Javascript 整数和10^n之间的除法会导致不精确的值吗?

Javascript 整数和10^n之间的除法会导致不精确的值吗?,javascript,numbers,division,Javascript,Numbers,Division,整数和10^n之间的除法是否会产生精确的值? 此外,整数在javascript中是一个安全的数字,并不像2.3e+1那样表示为“科学计数” 我在处理两个数字之间的负数 我知道带浮点数的数字会导致错误的结果,例如798-798*0.9=79.7999999995 所以我找到了下面的解决方案,我想知道整数(安全的)用10^n除法是否会导致不精确的值 这种方法有什么问题吗 function minus(num1, num2) { const num1Digits = (num1.toString(

整数和10^n之间的除法是否会产生精确的值? 此外,整数在javascript中是一个安全的数字,并不像2.3e+1那样表示为“科学计数”

我在处理两个数字之间的负数

我知道带浮点数的数字会导致错误的结果,例如
798-798*0.9=79.7999999995

所以我找到了下面的解决方案,我想知道整数(安全的)用10^n除法是否会导致不精确的值

这种方法有什么问题吗

function minus(num1, num2) {
  const num1Digits = (num1.toString().split('.')[1] || '').length;
  const num2Digits = (num2.toString().split('.')[1] || '').length;
  const baseNum = Math.pow(10, Math.max(num1Digits, num2Digits));
  return (num1 * baseNum - num2 * baseNum) / baseNum; // is this ok?
}

嗯,这不就是
num1-num2
?它会导致不精确的值,因为它在内部用2的幂表示,但是默认的十进制字符串表示,最接近的基-2值除以10的幂将是您期望的值,是的。您声明“整数在javascript中是安全的数字,并不像2.3e+1那样表示为“科学计数”,但我认为你错了。根据MDN,所有javascript数字都存储为双精度浮点值,并且“整数没有特定类型”“@DDupont为我的误导性表达道歉。javascript中的数字有一些显示形式,如整数形式的
100
、科学计数形式的
2.2e-7
和十进制形式的
7.99
。是的,它们存储为双精度浮点值。在我的例子中,我想限制
减号
方法的输入参数,这意味着
num1
num2
toString()
不会像
“2.2e-7”
那样是科学的计数,这不仅仅是
num1-num2
?它会导致不精确的值,因为它在内部用2的幂表示,但是默认的十进制字符串表示,最接近的基-2值除以10的幂将是您期望的值,是的。您声明“整数在javascript中是安全的数字,不表示为”科学计算“像2.3e+1”,但我认为你错了。根据MDN,所有JavaScript数字都存储为双精度浮点值,“整数没有特定类型”。@DDupont为我的误导性表达式道歉。javascript中的数字有一些显示形式,如整数形式的
100
、科学计数形式的
2.2e-7
和十进制形式的
7.99
。是的,它们存储为双精度浮点值。在我的例子中,我想限制
减号
方法的输入参数,这意味着
num1
num2
toString()
将不像
“2.2e-7”
那样是科学的计数。