Flutter 为什么从负数的模运算中得到不正确的输出
我在Dart上试过这个代码:我得到28.5分Flutter 为什么从负数的模运算中得到不正确的输出,flutter,dart,Flutter,Dart,我在Dart上试过这个代码:我得到28.5分 void main() { double modulo = -1.5 % 30.0; print(modulo); } Javascript中的相同代码返回-1.5 let模=-1.5%30; console.log(模)各州的文件(重点): 返回欧氏除法的剩余部分。两个整数a和b的欧几里德除法产生两个整数q和r,因此a==b*q+r和0An不久前在dart-lang报告中提出了这一点。很明显,dart中的%符号是“欧几里德模运算符,而不
void main() {
double modulo = -1.5 % 30.0;
print(modulo);
}
Javascript中的相同代码返回-1.5
let模=-1.5%30;
console.log(模)代码>各州的文件(重点):
返回欧氏除法的剩余部分。两个整数a
和b
的欧几里德除法产生两个整数q
和r
,因此a==b*q+r
和0An不久前在dart-lang报告中提出了这一点。很明显,dart中的%
符号是“欧几里德模运算符,而不是余数”
与你正在尝试做的事情相同的事情可以通过
(-1.5).余数(30.0)
judta idea:如果添加括号(除了减号以外的所有括号),会发生什么?我的第一个猜测是js有-(n%m)而dart有(-n)%mIt即使在同一种语言中也不总是一致的。“在C89(和历史K&R实现)中,负操作数的余数运算符的含义是实现定义的。此行为在C99中已更改,而更改仍保留在C11中。”在Python和数学中-1.5%30=28.5
。看见