简体   繁体   中英

Java floating-point numbers representation as a hexadecimal numbers

Why does 0x1p3 equal 8.0 ? Why does 0x1e3 equal 483 , whereas 0x1e3d equals 7741 ? It is confusing since 1e3d equals 1000.0 .

0x1e3 and 0x1e3d are hexadecimal integer literals. Note that e and d are hexadecimal digits, not the exponent indicator or double type indicator in this case.

1e3d is a decimal floating-point literal. The e is the exponent indicator, the d says that this is a double rather than a float .

The notation 0x1p3 is a way to express a floating-point literal in hexadecimal, as you can read in section 3.10.2 of the Java Language Specification. It means 1 times 2 to the power 3; the exponent is binary (so, it's 2-to-the-power instead of 10-to-the-power).

0x1e3 是 483 的十六进制,7741 的 0x1e3d 十六进制也是。 e被读取为值为 14 的十六进制数字。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM