首页 > 解决方案 > 为什么我需要从 double 转换为 int,反之则不然?

问题描述

假设我有一个 double 和一个 int。

double x = 5;
int y = x;

当我这样做时,它会抛出一个错误,因为我需要像这样显式地从 double 转换为 int,

int y = (int) x;

让它工作。但是当我这样做时

int x = 5;
double y = x;

没有错误被抛出,它工作得很好。必须从 double 显式转换为 int 而不是反之亦然,是否有任何理由?

标签: javavariablescasting

解决方案


Double 是比 int 更宽的类型。根据规范,您可以按以下顺序分配值:

byte -> short -> int -> long -> float -> double

主要思想:

加宽基元转换不会丢失有关数值整体大小的信息。

但:

缩小原语转换可能会丢失有关数值整体大小的信息,也可能会丢失精度和范围。


推荐阅读