在Dart中,除法运算符/ 是用来除数的。
例如,两个整数用/ 运算符进行除法,其结果被存储为一个整数。
void main() {
int first = 10;
int second = 2;
int result;
result = first / second;
}
上面的代码抛出了编译错误Error:类型为'double'的值不能被分配给类型为'int'的变量。
Int是一个没有小数的数字,而double是一个有小数的数字。
由于除法运算符总是返回double 。如果你把结果分配给int类型的变量,就会产生一个编译错误。
有很多方法可以解决这个问题。
Dart数字除法实例
第一种方法,使用截断除法运算符(~/)运算符,只返回int 类型。
/ 操作符的结果总是双倍的值。截断除法操作符( ~/)通过截断双倍的小数值,得到的是int数。
下面是一个示例程序
void main() {
int first = 10;
int second = 2;
int result;
result = first ~/ second;
print(result);
print(result.runtimeType);
}
输出
5
int
第二种使用返回结果类型为var 或double ,并使用除法运算符。
在这个例子中,使用除法运算符返回用var或double声明的动态变量,而不是int。动态变量可以是任何类型,如int和double。
下面是一个示例程序
void main() {
int first = 10;
int second = 2;
int result;
result = first ~/ second;
print(result);
print(result.runtimeType);
}
输出
5.5
double
第三种方法是使用num类型而不是int。
int 和 都是num的子类。所以使用类型为 的结果变量。 下面是一个示例程序double num
void main() {
int first = 11;
int second = 2;
num result;
result = first / second;
print(result);
print(result.runtimeType);
}
输出
5.5
double
第四种方法,使用floor 或ceil 来截断小数部分。
floor() method``ceil() method ,返回一个小于结果双倍值的低位int数。 ,返回一个大于结果双倍值的高位int数。
void main() {
int first = 11;
int second = 2;
int result;
int result1;
result = (first / second).floor();
result1 = (first / second).ceil();
print(result);
print(result1);
}
输出
5
6
结论
综上所述,由于整数除法总是返回双倍数,因此将其赋值给int会导致编译错误。讨论了多种方法来避免这种情况