【问题标题】:Type casting int and double [closed]类型转换 int 和 double [关闭]
【发布时间】:2013-06-19 14:06:10
【问题描述】:

在 Java 的原始类型转换中,以下代码将显示什么?

float a = 1.11;
int b = a;
int c = (int)a;
System.out.println(a + " " + b + " " + c);

如果 double 是 64 位而 int 是 32 位,是否可以将 double 变量转换为 int?

【问题讨论】:

  • “下面的代码会显示什么?” 你为什么不自己试试呢?而且它不会显示任何内容,因为它无法编译。
  • 请把你的问题问清楚
  • 为什么不能编译?
  • 因为在编译时不可能从a 转换为b;你会失去精度。
  • @fge 谢谢。这就是我想知道的。

标签: java casting integer double type-conversion


【解决方案1】:

要回答您最后一个有趣的问题(问题的其他部分最好由调试器回答),对于 int 来说太大的双精度数将转换为最大可能的 int;类似地,对于 int 来说太小的 double 将强制转换为尽可能小的 int。

http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#d5e4334

请注意,Java 中将 int 定义为 32 位(用于永恒),而 double 定义为 64 位(用于永恒)。

【讨论】:

    【解决方案2】:

    这将编译:

    float a = 1.11f;
    int b = (int) a;
    int c = (int)a;
    System.out.println(a + " " + b + " " + c);
    
    1. 要初始化float 变量,应在数值末尾添加f
    2. floatdouble 一样,如果位大小不同,则无法转换为 int 类型。
    3. 下次请使用google.com查找此类答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 2011-02-23
      相关资源
      最近更新 更多