跳到主要內容

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;