跳到主要内容

integer_literal_imprecise_as_double

整数文字正在被用作双精度浮点数,但无法在不溢出或损失精度的情况下表示为 64 位双精度浮点数:'{0}'。

描述

#

当整数文字被隐式转换为双精度浮点数,但无法在不溢出或损失精度的情况下表示为 64 位双精度浮点数时,分析器会生成此诊断。如果上下文需要类型 double,整数文字会被隐式转换为双精度浮点数。

示例

#

以下代码会产生此诊断,因为整数值 9223372036854775807 不能精确地表示为双精度浮点数

dart
double x = 9223372036854775807;

常见修复

#

如果你需要使用精确值,请使用 BigInt 类来表示该值

dart
var x = BigInt.parse('9223372036854775807');

如果你需要使用双精度浮点数,请将值更改为可以精确表示的值

dart
double x = 9223372036854775808;