我如何将商作为int和余数作为JavaScript中的浮点

Seb*_*ten 20 javascript math

在我的计算器上,当我做18/7时,我得到2.5714285714285714285714285714286.从我超级有限的数学技能2是商和.5714285714285714285714285714286是余数.

如何在JavaScript中对此进行建模?

谢谢!

Zéy*_*hin 34

var floatingPointPart = (18/7) % 1;
var integerPart = Math.floor(18/7);
Run Code Online (Sandbox Code Playgroud)

  • 为什么不选择“ Math.trunc”?然后它也可以使用负数。 (3认同)

Jib*_*hew 8

对于负数,Math.floor存在将结果舍入到错误方向的问题,使用逐位运算来获得整数商更好.

var quot = ~~(num/num1)
Run Code Online (Sandbox Code Playgroud)

希望这适合你!

  • 需要小心这一点,因为它只适用于绝对值 < 2^31 的整数。对于大于 2^31 的数字,将会得到意想不到的结果([按位运算符](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Bitwise) 解释了大于 2^31 的数字如何在应用按位运算符之前,二进制表示中的 32 位会被截断。 (3认同)
  • 所有这些都是因为按位反转运算符强制其返回整数。:) 爱它! (2认同)

Nor*_*ard 6

var rawQuotient = 18/7;
var remainder = rawQuotient % 1;
var quotient = rawQuotient - remainder;
Run Code Online (Sandbox Code Playgroud)

在大多数数学中,没有真正需要区分小数部分和整个部分,特别是考虑到整个事物可以表示为分数(18/7),实数,或整数和分数的混合(2和4/7).

当你进入编程或工程或其他衍生工具时,你有明确的分离用途; 但商是真的整数,整数和分数,但你选择代表那个.


小智 5

我们可以使用简单的数学仅使用/&%运算符即可得到答案。

将“num1”视为第一个值,将“num2”视为第二个值。然后 :

var Quotient = (num1 - (num1 % num2)) / num2;

var FloatingPoint = (num1 % num2) / num2;
Run Code Online (Sandbox Code Playgroud)