【问题标题】:Would a double to int type conversion be considered implicit type conversion?将 double 到 int 类型转换视为隐式类型转换吗?
【发布时间】:2020-11-21 09:09:38
【问题描述】:

假设我将 double x 转换为 int,这可以通过截断自动完成。这是否仍被视为隐式转换?隐式转换是否无法将实际值从一种类型转换为另一种类型而不会丢失该值的任何准确性。在这种情况下,我不会丢失 x 值的小数部分吗?我在java docs 中找不到任何关于此的具体内容,所以我想在这里问:

double x = 420.69;
int y = x;

【问题讨论】:

  • 这不是隐式转换,这是一个错误。 int y = x; 不会编译。
  • 在文档中,paragraph 5.1.3 Narrowing Primitive Conversion 对此进行了介绍。由于显式较宽的类型转换为较窄的类型,这种转换是可能的。
  • 隐式转换与显式转换相反。显式转换使用强制转换规则,因此int y = (int)x; 将是显式的。隐式转换缺少强制转换,这意味着程序员可能犯了错误。

标签: java implicit-conversion


【解决方案1】:

这不是隐式转换,这将导致编译器错误。

double x = 420.69;
int y = x;

由于 double 是比 int 更大的数据类型,因此需要向下转换。

double x = 420.69;
int y = (int)x;

但是,小数点后的所有数字都会丢失。

【讨论】:

    猜你喜欢
    • 2019-08-18
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多