不能双重保存int值吗?

问题描述 投票:0回答:1

我正在从提供天气信息的 API 接收数据,为简单起见,我将仅提供接收到的数据的属性:

final double feels_like;

以及json反序列化:

feels_Like = json['main']['feels_like']

但是我得到了那个异常:

type 'int' is not a subtype of type 'double'
,实际上我解决了它(使用
toDouble()
)这里没有问题,问题在于以下概念。

假设返回值是一个int,double不能容纳它吗?

例如:

double feels_like = 30.1; // ok
double feels_like = 30; // also ok

这两种数据类型都是基类

num
类的子类型,并且 double 对象可以保存 int 对象,但反之则不然。

那么,为什么在使用 API 时会发生这种情况,即使它返回

int

json dart types
1个回答
0
投票

不可以,

double
类型的变量不能保存
int

只是必要时整数文字会自动转换为双精度数

以下是一个错误:

double feels_like = 30 as int; // not allowed

int x = 30;
double y = x; // not allowed

如果您想要一个可以保存

double
int
值的类型,请将类型声明为
num

num feels_like = 30 as int; // allowed

int x = 30;
num y = x; // allowed

num z = 3.7; // allowed
© www.soinside.com 2019 - 2024. All rights reserved.