How to do Integer division in Dart?
That is because Dart uses double
to represent all numbers in dart2js
. You can get interesting results, if you play with that:
Code:
int a = 1;
a is int;
a is double;
Result:
true
true
Actually, it is recommended to use type num
when it comes to numbers, unless you have strong reasons to make it int
(in for loop, for example). If you want to keep using int
, use truncating division like this:
int a = 500;
int b = 250;
int c;
c = a ~/ b;
Otherwise, I would recommend to utilize num
type.
Integer division is
c = a ~/ b;
you could also use
c = (a / b).floor();
c = (a / b).ceil();
if you want to define how fractions should be handled.
Short Answer
Use c = a ~/ b
.
Long Answer
According to the docs, int
are numbers without a decimal point, while double
are numbers with a decimal point.
Both double
and int
are subtypes of num
.
When two integers are divided using the /
operator, the result is evaluated into a double
. And the c
variable was initialized as an integer. There are at least two things you can do:
- Use
c = a ~/ b
.
The ~/
operator returns an int
.
- Use
var c;
. This creates a dynamic variable that can be assigned to any type, including adouble
andint
andString
etc.