栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么我不能将数字转换为双精度数?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么我不能将数字转换为双精度数?

当分析

100
从公司的FireStore(这实际上不支持“号码类型”,但将其转换),它将通过标准的被解析到一个
int

Dart 不会自动“智能”转换这些类型。实际上,您不能将
int
转换为
double
,这是您面临的问题。如果可能的话,您的代码就可以正常工作。

解析中

相反,您可以自己 解析 它:

double weight = json['weight'].toDouble();

铸件

什么也工作,是解析JSON的

num
,然后将其分配给一个
double
,这将投
num
double

double weight = json['weight'] as num;

乍一看似乎有些奇怪,实际上Dart
Analysis工具
(例如内置于VS
Code和IntelliJ的Dart插件中的工具)会将其标记为 “不必要的强制转换” ,而并非如此。

double a = 100; // this will not compiledouble b = 100 as num; // this will compile, but is still marked as an "unnecessary cast"

double b = 100 asnum
进行编译,因为
num
是的超类,
double
即使没有显式强制转换,Dart也会将超类型强制转换为子类型。
一个 显式的转换 将是以下:

double a = 100 as double; // does not compile because int is not the super class of doubledouble b = (100 as num) as double; // compiles, you can also omit the double cast

这是有关
Dart中的类型和类型转换”
的不错的阅读。

说明

您发生了以下情况:

double weight;weight = 100; // cannot compile because 100 is considered an int// is the same asweight = 100 as double; // which cannot work as I explained above// Dart adds those casts automatically


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372313.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号