我刚刚开始学习Java,并对文字有疑问。

码:

class what_is_px_literals {
public static void main(String args[])
{
    float a = 0x12; //Question Line
    System.out.print("\nThis is the number in:\n\tHexdecimal:\t0x12.2\n\tDecimal:\t"+a+"\n\tWorking of P\t"+0x12.2P2+"\n");
}
}


上面的代码编译没有错误。但是,将该行重写为:

float a = 0x12.2 //or float a = 0x12.2F or double a = 0x12.2D


给出一个错误。

为什么在小数点后加上数字会出现错误?

为什么这行代码错误:

float a = 0x12.2 //or float a = 0x12.2F or double a = 0x12.2D

最佳答案

根本原因是添加此表示法是为了精确表示而不是为了方便。期望指数将以浮点值的内部表示形式为基数2。


  为什么在小数点后加上数字会出现错误?


它不用于十六进制,因为十六进制仅用于单独使用这样的点的值。您必须提供使用此表示法的指数。

例如来自Double的来源。

public static final double MAX_VALUE = 0x1.fffffffffffffP+1023; // 1.7976931348623157e+308

public static final double MIN_NORMAL = 0x1.0p-1022; // 2.2250738585072014E-308

09-25 20:21