Unsupported operation: Infinity or NaN toInt


Avatar de Pierre Courtois

Pourquoi ai-je l’erreur : Unsupported operation: Infinity or NaN toInt ? L’erreur « Unsupported operation: Infinity or NaN toInt » dans Flutter se produit généralement lorsqu’on essaie de convertir un nombre qui est soit infini (Infinity) soit « Not a Number » (NaN) en un entier (int) en utilisant la méthode toInt(). Ces valeurs ne peuvent pas être représentées…


Infinity or NaN toInt

Pourquoi ai-je l’erreur : Unsupported operation: Infinity or NaN toInt ?

L’erreur « Unsupported operation: Infinity or NaN toInt » dans Flutter se produit généralement lorsqu’on essaie de convertir un nombre qui est soit infini (Infinity) soit « Not a Number » (NaN) en un entier (int) en utilisant la méthode toInt(). Ces valeurs ne peuvent pas être représentées comme des nombres entiers, ce qui va donc provoquer cette erreur.

Voici un exemple de code qui va produire cette erreur :

void main() {
  double value = 0.0 / 0.0; // Ceci produit NaN
  int intValue = value.toInt(); // Essaie de convertir NaN en int, ce qui provoque l'erreur
  print(intValue);
}

Comment résoudre cette erreur ?

La manière la plus simple d’éviter ce problème est de vérifier vos valeurs avant de les convertir, et le cas échéant de donner une valeur par défaut à vos variables de type NaN ou Infinity. Voici un exemple où je vérifie d’abord la valeur de ma variable. Je lui attribue ensuite une autre valeur si elle risque de me générer une erreur :

void main() {
  double value = 0.0 / 0.0; // Ceci produit NaN

  int intValue;
  if (value.isNaN) {
    intValue = 0; // Par exemple, utilisez 0 comme valeur par défaut
  } else if (value.isInfinite) {
    intValue = value.isNegative ? -2147483648 : 2147483647; // Utilisez la valeur maximale ou minimale possible
  } else {
    intValue = value.toInt();
  }

  print(intValue);
}
Avatar de Pierre Courtois