Java字节和浮点乘法

时间:2014-03-21 10:09:23

标签: java byte multiplication

如何对浮点数和字节进行乘法并得到以下结果:

float f = 0.5
byte b = (byte) 0xFF;
f * b = 0x88 ??

由于

2 个答案:

答案 0 :(得分:2)

我认为问题是.5 * -1评估为-0.5;将结果转换回字节(或任何你想要的整数类型)将其转换为0 ...因此,你在问题中提到的假设似乎不正确:

public static void main(String[] args)
{
    byte b1 = (byte) 0xFF;
    byte b2 = (byte) 0xAA;
    System.out.println(b1);
    System.out.println(b2);
    System.out.println(String.format("0x%02X ", b1));
    System.out.println(String.format("0x%02X ", b2));
    System.out.println(String.format("0x%02X ", b1 * b2));

    System.out.println();

    float f = 0.5f;
    System.out.println(f);
    float res = f * b1;
    System.out.println(res);
    System.out.println((byte)res);
    System.out.println(String.format("0x%02X ", (byte)res));
}

因此你得到了这个输出:

-1
-86
0xFF 
0xAA 
0x56 

0.5
-0.5
0
0x00 

另外,您可能需要check out this question以获取有关String.format-idea的更多详细信息。

答案 1 :(得分:0)

0xFF的十进制值为-1,0x88的十进制值为-120。再次检查代码逻辑:)

如果f是常数而不是乘法,则可以使用除法 - 如果将某个数字乘以0.5则与将其除以2相同。

byte f = (byte) 2; 
byte b = (byte) 0xFF;
byte resutl = (byte)(b / f);