为什么我用相同的代码得到不同的结果?

老杂种*_*老杂种 2 javascript dart

我按照js代码写了一些dart代码,有问题,希望有人能帮助我/

js代码:

var max = 0x80000000;
var data = -2000;
var mod = data % max;
Run Code Online (Sandbox Code Playgroud)

mod 值为 -2000

飞镖代码:

var max = 0x80000000;
var data = -2000;
var mod = data % max;
Run Code Online (Sandbox Code Playgroud)

mod 值为 2147481648

为什么?

Pat*_*ick 5

因为 JavaScript 和 Dart 是不同的语言,具有不同的运算符规范。

Dart 指定余数运算结果始终为正:

https://api.dart.dev/stable/2.10.4/dart-core/num/operator_modulo.html

在 JavaScript 中,余数可以是负数,结果的符号等于被除数的符号:

https://www.ecma-international.org/ecma-262/11.0/index.html#sec-numeric-types-number-remainder