java - 为什么我需要从 double 转换为 int,反之则不然?
问题描述
假设我有一个 double 和一个 int。
double x = 5;
int y = x;
当我这样做时,它会抛出一个错误,因为我需要像这样显式地从 double 转换为 int,
int y = (int) x;
让它工作。但是当我这样做时
int x = 5;
double y = x;
没有错误被抛出,它工作得很好。必须从 double 显式转换为 int 而不是反之亦然,是否有任何理由?
解决方案
Double 是比 int 更宽的类型。根据规范,您可以按以下顺序分配值:
byte -> short -> int -> long -> float -> double
主要思想:
加宽基元转换不会丢失有关数值整体大小的信息。
但:
缩小原语转换可能会丢失有关数值整体大小的信息,也可能会丢失精度和范围。
推荐阅读
- amazon-s3 - 无法设置亚马逊 s3 的存储桶策略
- php - 使用explode()函数获取特定内容
- postgresql - \copy PSQL 命令不适用于 POINT(...) 几何类型
- c - 使用 fscanf c 将文件复制到数组(结构)中
- android - Android 蓝牙:ArrayAdapter 未填充。(微调器)
- crystal-lang - 在水晶中为什么我需要做matches.try &.[0]
- javascript - 捕获输入字段中的文本
- mips - 将 2D 阵列实现为 1D 阵列 (MIPS) 的内存寻址问题
- angular - 如何在 Angular 7 中返回 observable?
- presto - PrestoDB:过滤以获取元素包含在地图列的键中的行