Pular para o conteúdo principal

avoid_js_rounded_ints

Detalhes sobre o diagnóstico 'avoid_js_rounded_ints' produzido pelo analisador do Dart.

Integer literal can't be represented exactly when compiled to JavaScript.

Descrição

#

O analisador emite este diagnóstico quando o valor de um literal int não pode ser representado exatamente como um Number do JavaScript.

Quando código Dart é compilado para JavaScript, inteiros cujos valores estão fora do intervalo -(2^53 - 1) a 2^53 - 1 podem ser arredondados para o valor representável mais próximo. Isso altera silenciosamente o valor do literal na web.

Para saber mais sobre como o Dart representa números em diferentes plataformas, incluindo quando compilado para JavaScript, consulte Números no Dart.

Exemplo

#

O código a seguir produz este diagnóstico porque o literal 9007199254740993 (2^53 + 1) não pode ser representado exatamente como um Number do JavaScript e é arredondado para 9007199254740992 em tempo de execução quando compilado para JavaScript:

dart
final i = 9007199254740993;

Correções comuns

#

Se o valor precisar ser exato em todas as plataformas, inclusive quando compilado para JavaScript, use um BigInt para representá-lo:

dart
final i = BigInt.parse('9007199254740993');

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.