Java 字节和浮点乘法

标签 java byte multiplication

如何将 float 和字节相乘并得到以下结果:

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 

您可能还想check out this question有关 String.format-idea 的更多详细信息。

关于Java 字节和浮点乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22555745/

相关文章:

java - Android Studio Logcat 不显示日志

java - Maven可以编译POM依赖吗?

java - Spring Actuator http,但嵌入式 servlet https

c - C中通过套接字发送多个字段的数据

改变 char* 指向几位偏移量

java - 有人可以向我解释这段使用移位将两个变量相乘的代码吗?

python - 列表的累积乘积

java - 扫描仪抛出 FileNotFoundException 但使用 bufferedreader 和 inputstream 不会?

java - 从 UDP 服务器发送文件时出现问题

python - 阶乘非零数字不匹配