Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java字节和浮点乘法_Java_Byte_Multiplication - Fatal编程技术网

Java字节和浮点乘法

Java字节和浮点乘法,java,byte,multiplication,Java,Byte,Multiplication,如何对浮点和字节进行乘法,并得到以下结果: float f = 0.5 byte b = (byte) 0xFF; f * b = 0x88 ?? 谢谢我认为问题在于.5*-1的计算结果是-0.5;将结果转换回字节(或任何您想要的整数类型)会将其转换为0。。。因此,您在问题中提到的假设似乎不正确: public static void main(String[] args) { byte b1 = (byte) 0xFF; byte b2 = (byte) 0xAA;

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

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

谢谢

我认为问题在于.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 

此外,您可能还想了解有关String.format idea的更多详细信息。

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

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

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

看来你对结果的期望是不正确的。我同意德夫努尔的看法。请看下面我的答案。