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;