如何在dart中做整数除法|Flutter的例子

2,029 阅读2分钟

在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

第二种使用返回结果类型为vardouble ,并使用除法运算符。

在这个例子中,使用除法运算符返回用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

第四种方法,使用floorceil 来截断小数部分。

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会导致编译错误。讨论了多种方法来避免这种情况