(Java) 为什么写 0x12.2P2 是正确的,但 0x12.2F 不是?
(Java) Why is writing 0x12.2P2 correct but not 0x12.2F?
我刚开始学习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 为底给出,因为它在浮点值的内部表示中。
Why does it give an error when numbers are added after the decimal point?
它不用于十六进制,因为这些值用于单独使用这样一个点没有用的值。您必须提供指数才能使用此表示法。
例如来自 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
我刚开始学习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 为底给出,因为它在浮点值的内部表示中。
Why does it give an error when numbers are added after the decimal point?
它不用于十六进制,因为这些值用于单独使用这样一个点没有用的值。您必须提供指数才能使用此表示法。
例如来自 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