Java:从int到short,从float到short

时间:2016-01-11 07:53:12

标签: java primitive-types

我知道无法做到, 但是因为我从其他地方得到了这些价值(...) 并假设:

  • 我得到的是:> 0和< Short.Max_VALUE;
  • 我得到的浮点数是:> 0和< Short.Max_VALUE;

我怎么能进行这样的转换?

谢谢!

3 个答案:

答案 0 :(得分:4)

为什么你声称它无法完成?

如果您输入的值适合short类型间隔,则会成功转换:

    int i = 3444;
    short s1 = (short) i;

    float f = 3233.0f;
    short s2 = (short) f;

这称为缩小原始转换,并在JLS Ch. 5.1.3中描述

答案 1 :(得分:3)

如果你知道你的intn,比如说)在目标类型的可接受范围内,那么你只需投射

short m = (short)n;

float f采用类似的方法。

short m = (short)f;

答案 2 :(得分:2)

为了理解这个操作,我们必须回到很久以前读过的一本书。这里应用的概念称为缩小转换,表示

  

“将有符号整数缩小转换为整数类型T只会丢弃除n个最低位之外的所有位,其中n是用于表示类型T的位数。除了可能丢失有关幅度的信息之外对于数值,这可能导致结果值的符号与输入值的符号不同。“

同样的概念适用于从double转换为float。此转换可能会丢失精度和范围,导致从非零双精度浮零,并且浮点无穷大转换为相同的有符号浮点数。