# Dart/Flutter check if value is an integer/whole number

### Question Asked by Hasen on September 19, 2019 (source).

How do I check if a value is a whole number (integer) or contains a decimal? In Javascript we have `isInteger` but I couldn't find the equivalent in Dart.

We seem to have checks for `isEven`, `isOdd`, `isFinite`, `isInfinite`, `isNaN` and `isNegative` but no `isInteger`?

Dart numbers (the type `num`) are either integers (type `int`) or doubles (type `double`).

It is easy to check if a number is an `int`, just do `value is int`.

The slightly harder task is to check whether a `double` value has an integer value, or no fractional part. There is no simple function answering that, but you can do `value == value.roundToDouble()`. This removes any fractional part from the `double` value and compares it to the original value. If they are the same, then there was no fractional part.

So, a helper function could be:

``````bool isInteger(num value) =>
value is int || value == value.roundToDouble();
``````

I use `roundToDouble()` instead of just `round()` because the latter would also convert the value to an integer, which may give a different value for large double values.

SHARE: