【问题标题】:Converting a string to double in Dart using double.parse()使用 double.parse() 在 Dart 中将字符串转换为双精度
【发布时间】:2018-09-13 08:46:12
【问题描述】:

我正在尝试转换从 Google Geo 返回的坐标。 API 变成双打。返回的响应的简化部分是......

{ 
  locationData: {
    bounds: {
      northeast: 40.222222,
      southwest: 38.265987
    }
  }
}

当我使用print(locationData['bounds']['northeast']) 时,我的控制台读取并理解该值为40.222222 但是,当我尝试使用解析方法时,我收到以下错误:

var neLat = double.parse(locationData['bounds']['northeast']);

I/flutter (10537):类型“double”不是类型转换中“String”类型的子类型,其中

I/flutter (10537): double 来自 dart:core

I/flutter (10537):字符串来自 dart:core

该错误使我相信我的解析无效,即使它显然是一个双精度值,就像一个字符串一样。我错过了这种转换的东西吗?我已经在使用 double.parse 的多个示例中看到了转换,我只是无法弄清楚我的问题是什么..

【问题讨论】:

  • 如果您从 JSON 解析该映射,则该值已经是双精度值。类型错误来自于将一个 double 传递给 parse 方法,该方法需要一个字符串
  • @JonahWilliams 哦,你说得对。我习惯使用 TypeScript 并且必须声明类型,很高兴知道它假定了类型。谢谢!

标签: google-api dart flutter


【解决方案1】:

如果该值是从 JSON 解析的,Dart 知道该值是双精度值,并且错误告诉我该值是双精度类型并且转换为预期类型的​​字符串。

所以一旦我理解了错误就更清楚了!

【讨论】:

  • 那么如何解决呢?我正在使用 dart,我从 JSON 中解析一个 double 并将其转换为一个字符串,例如:“${this.myDoubleValue}”,但出现了该错误。
  • @NicholasJela 我的问题是我试图在我的值上使用double.parse 进行转换,但 Dart 已经将我的 JSON 转换为双精度,因此它试图将双精度解析为双精度,这就是引发错误的原因。
【解决方案2】:

我也面临同样的问题。 我知道这是一个愚蠢的答案,但它对我有用。我使用 Getx 来保存状态,在将字符串转换为 double 时显示错误

String 不是 double 类型的子类型

由于之前变量的状态正在保存,所以我重新启动了应用程序并尝试了类型转换,它运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    相关资源
    最近更新 更多