📄 doublecvt.java
字号:
/** * Handle Double and Float conversion. * * @author Edouard G. Parmelan <egp@free.fr> */public class DoubleCvt { static void print (String v, double d) { System.out.println (v + ": " + Long.toString (Double.doubleToLongBits (d), 16)); System.out.println (v + " as float: " + Integer.toString (Float.floatToIntBits ((float)d), 16)); System.out.println (v + " as int: " + (int)d + " " + Integer.toString ((int)d, 16)); System.out.println (v + " as long: " + (long)d + " " + Long.toString ((long)d, 16)); } static void print (String v, float d) { System.out.println (v + ": " + Integer.toString (Float.floatToIntBits (d), 16)); System.out.println (v + " as double: " + Long.toString (Double.doubleToLongBits ((double)d), 16)); System.out.println (v + " as int: " + (int)d + " " + Integer.toString ((int)d, 16)); System.out.println (v + " as long: " + (long)d + " " + Long.toString ((long)d, 16)); } static long lnp (int shift) { return -1L >>> (64 - shift); } static int inp (int shift) { return -1 >>> (32 - shift); } static void test_double() { print ("NaN", Double.NaN); print ("MIN_VALUE", Double.MIN_VALUE); print ("MAX_VALUE", Double.MAX_VALUE); print ("POSITIVE_INFINITY", Double.POSITIVE_INFINITY); print ("NEGATIVE_INFINITY", Double.NEGATIVE_INFINITY); for (int i = 1; i <= 64; i++) { long l = lnp(i); print ("-lnp(" + i + ")", (double)(-l)); print ("lnp(" + i + ")", (double)l); } } static void test_float() { print ("NaN", Float.NaN); print ("MIN_VALUE", Float.MIN_VALUE); print ("MAX_VALUE", Float.MAX_VALUE); print ("POSITIVE_INFINITY", Float.POSITIVE_INFINITY); print ("NEGATIVE_INFINITY", Float.NEGATIVE_INFINITY); for (int i = 1; i <= 32; i++) { int l = inp(i); print ("-inp(" + i + ")", (float)(-l)); print ("inp(" + i + ")", (float)l); } } public static void main (String[] args) { test_double(); test_float(); } }/* Expected Output:NaN: 7ff8000000000000NaN as float: 7fc00000NaN as int: 0 0NaN as long: 0 0MIN_VALUE: 1MIN_VALUE as float: 0MIN_VALUE as int: 0 0MIN_VALUE as long: 0 0MAX_VALUE: 7fefffffffffffffMAX_VALUE as float: 7f800000MAX_VALUE as int: 2147483647 7fffffffMAX_VALUE as long: 9223372036854775807 7fffffffffffffffPOSITIVE_INFINITY: 7ff0000000000000POSITIVE_INFINITY as float: 7f800000POSITIVE_INFINITY as int: 2147483647 7fffffffPOSITIVE_INFINITY as long: 9223372036854775807 7fffffffffffffffNEGATIVE_INFINITY: -10000000000000NEGATIVE_INFINITY as float: -800000NEGATIVE_INFINITY as int: -2147483648 -80000000NEGATIVE_INFINITY as long: -9223372036854775808 -8000000000000000-lnp(1): -4010000000000000-lnp(1) as float: -40800000-lnp(1) as int: -1 -1-lnp(1) as long: -1 -1lnp(1): 3ff0000000000000lnp(1) as float: 3f800000lnp(1) as int: 1 1lnp(1) as long: 1 1-lnp(2): -3ff8000000000000-lnp(2) as float: -3fc00000-lnp(2) as int: -3 -3-lnp(2) as long: -3 -3lnp(2): 4008000000000000lnp(2) as float: 40400000lnp(2) as int: 3 3lnp(2) as long: 3 3-lnp(3): -3fe4000000000000-lnp(3) as float: -3f200000-lnp(3) as int: -7 -7-lnp(3) as long: -7 -7lnp(3): 401c000000000000lnp(3) as float: 40e00000lnp(3) as int: 7 7lnp(3) as long: 7 7-lnp(4): -3fd2000000000000-lnp(4) as float: -3e900000-lnp(4) as int: -15 -f-lnp(4) as long: -15 -flnp(4): 402e000000000000lnp(4) as float: 41700000lnp(4) as int: 15 flnp(4) as long: 15 f-lnp(5): -3fc1000000000000-lnp(5) as float: -3e080000-lnp(5) as int: -31 -1f-lnp(5) as long: -31 -1flnp(5): 403f000000000000lnp(5) as float: 41f80000lnp(5) as int: 31 1flnp(5) as long: 31 1f-lnp(6): -3fb0800000000000-lnp(6) as float: -3d840000-lnp(6) as int: -63 -3f-lnp(6) as long: -63 -3flnp(6): 404f800000000000lnp(6) as float: 427c0000lnp(6) as int: 63 3flnp(6) as long: 63 3f-lnp(7): -3fa0400000000000-lnp(7) as float: -3d020000-lnp(7) as int: -127 -7f-lnp(7) as long: -127 -7flnp(7): 405fc00000000000lnp(7) as float: 42fe0000lnp(7) as int: 127 7flnp(7) as long: 127 7f-lnp(8): -3f90200000000000-lnp(8) as float: -3c810000-lnp(8) as int: -255 -ff-lnp(8) as long: -255 -fflnp(8): 406fe00000000000lnp(8) as float: 437f0000lnp(8) as int: 255 fflnp(8) as long: 255 ff-lnp(9): -3f80100000000000-lnp(9) as float: -3c008000-lnp(9) as int: -511 -1ff-lnp(9) as long: -511 -1fflnp(9): 407ff00000000000lnp(9) as float: 43ff8000lnp(9) as int: 511 1fflnp(9) as long: 511 1ff-lnp(10): -3f70080000000000-lnp(10) as float: -3b804000-lnp(10) as int: -1023 -3ff-lnp(10) as long: -1023 -3fflnp(10): 408ff80000000000lnp(10) as float: 447fc000lnp(10) as int: 1023 3fflnp(10) as long: 1023 3ff-lnp(11): -3f60040000000000-lnp(11) as float: -3b002000-lnp(11) as int: -2047 -7ff-lnp(11) as long: -2047 -7fflnp(11): 409ffc0000000000lnp(11) as float: 44ffe000lnp(11) as int: 2047 7fflnp(11) as long: 2047 7ff-lnp(12): -3f50020000000000-lnp(12) as float: -3a801000-lnp(12) as int: -4095 -fff-lnp(12) as long: -4095 -ffflnp(12): 40affe0000000000lnp(12) as float: 457ff000lnp(12) as int: 4095 ffflnp(12) as long: 4095 fff-lnp(13): -3f40010000000000-lnp(13) as float: -3a000800-lnp(13) as int: -8191 -1fff-lnp(13) as long: -8191 -1ffflnp(13): 40bfff0000000000lnp(13) as float: 45fff800lnp(13) as int: 8191 1ffflnp(13) as long: 8191 1fff-lnp(14): -3f30008000000000-lnp(14) as float: -39800400-lnp(14) as int: -16383 -3fff-lnp(14) as long: -16383 -3ffflnp(14): 40cfff8000000000lnp(14) as float: 467ffc00lnp(14) as int: 16383 3ffflnp(14) as long: 16383 3fff-lnp(15): -3f20004000000000-lnp(15) as float: -39000200-lnp(15) as int: -32767 -7fff-lnp(15) as long: -32767 -7ffflnp(15): 40dfffc000000000lnp(15) as float: 46fffe00lnp(15) as int: 32767 7ffflnp(15) as long: 32767 7fff-lnp(16): -3f10002000000000-lnp(16) as float: -38800100-lnp(16) as int: -65535 -ffff-lnp(16) as long: -65535 -fffflnp(16): 40efffe000000000lnp(16) as float: 477fff00lnp(16) as int: 65535 fffflnp(16) as long: 65535 ffff-lnp(17): -3f00001000000000-lnp(17) as float: -38000080-lnp(17) as int: -131071 -1ffff-lnp(17) as long: -131071 -1fffflnp(17): 40fffff000000000lnp(17) as float: 47ffff80lnp(17) as int: 131071 1fffflnp(17) as long: 131071 1ffff-lnp(18): -3ef0000800000000-lnp(18) as float: -37800040-lnp(18) as int: -262143 -3ffff-lnp(18) as long: -262143 -3fffflnp(18): 410ffff800000000lnp(18) as float: 487fffc0lnp(18) as int: 262143 3fffflnp(18) as long: 262143 3ffff-lnp(19): -3ee0000400000000-lnp(19) as float: -37000020-lnp(19) as int: -524287 -7ffff-lnp(19) as long: -524287 -7fffflnp(19): 411ffffc00000000lnp(19) as float: 48ffffe0lnp(19) as int: 524287 7fffflnp(19) as long: 524287 7ffff-lnp(20): -3ed0000200000000-lnp(20) as float: -36800010-lnp(20) as int: -1048575 -fffff-lnp(20) as long: -1048575 -ffffflnp(20): 412ffffe00000000lnp(20) as float: 497ffff0lnp(20) as int: 1048575 ffffflnp(20) as long: 1048575 fffff-lnp(21): -3ec0000100000000-lnp(21) as float: -36000008-lnp(21) as int: -2097151 -1fffff-lnp(21) as long: -2097151 -1ffffflnp(21): 413fffff00000000lnp(21) as float: 49fffff8lnp(21) as int: 2097151 1ffffflnp(21) as long: 2097151 1fffff-lnp(22): -3eb0000080000000-lnp(22) as float: -35800004-lnp(22) as int: -4194303 -3fffff-lnp(22) as long: -4194303 -3ffffflnp(22): 414fffff80000000lnp(22) as float: 4a7ffffclnp(22) as int: 4194303 3ffffflnp(22) as long: 4194303 3fffff-lnp(23): -3ea0000040000000-lnp(23) as float: -35000002-lnp(23) as int: -8388607 -7fffff-lnp(23) as long: -8388607 -7ffffflnp(23): 415fffffc0000000lnp(23) as float: 4afffffelnp(23) as int: 8388607 7ffffflnp(23) as long: 8388607 7fffff-lnp(24): -3e90000020000000-lnp(24) as float: -34800001-lnp(24) as int: -16777215 -ffffff-lnp(24) as long: -16777215 -fffffflnp(24): 416fffffe0000000lnp(24) as float: 4b7ffffflnp(24) as int: 16777215 fffffflnp(24) as long: 16777215 ffffff-lnp(25): -3e80000010000000-lnp(25) as float: -34000000-lnp(25) as int: -33554431 -1ffffff-lnp(25) as long: -33554431 -1fffffflnp(25): 417ffffff0000000lnp(25) as float: 4c000000lnp(25) as int: 33554431 1fffffflnp(25) as long: 33554431 1ffffff-lnp(26): -3e70000008000000-lnp(26) as float: -33800000-lnp(26) as int: -67108863 -3ffffff-lnp(26) as long: -67108863 -3fffffflnp(26): 418ffffff8000000lnp(26) as float: 4c800000lnp(26) as int: 67108863 3fffffflnp(26) as long: 67108863 3ffffff-lnp(27): -3e60000004000000-lnp(27) as float: -33000000-lnp(27) as int: -134217727 -7ffffff-lnp(27) as long: -134217727 -7fffffflnp(27): 419ffffffc000000lnp(27) as float: 4d000000lnp(27) as int: 134217727 7fffffflnp(27) as long: 134217727 7ffffff-lnp(28): -3e50000002000000-lnp(28) as float: -32800000-lnp(28) as int: -268435455 -fffffff-lnp(28) as long: -268435455 -ffffffflnp(28): 41affffffe000000lnp(28) as float: 4d800000lnp(28) as int: 268435455 ffffffflnp(28) as long: 268435455 fffffff-lnp(29): -3e40000001000000-lnp(29) as float: -32000000-lnp(29) as int: -536870911 -1fffffff-lnp(29) as long: -536870911 -1ffffffflnp(29): 41bfffffff000000lnp(29) as float: 4e000000lnp(29) as int: 536870911 1ffffffflnp(29) as long: 536870911 1fffffff-lnp(30): -3e30000000800000-lnp(30) as float: -31800000-lnp(30) as int: -1073741823 -3fffffff-lnp(30) as long: -1073741823 -3ffffffflnp(30): 41cfffffff800000lnp(30) as float: 4e800000lnp(30) as int: 1073741823 3ffffffflnp(30) as long: 1073741823 3fffffff-lnp(31): -3e20000000400000-lnp(31) as float: -31000000-lnp(31) as int: -2147483647 -7fffffff-lnp(31) as long: -2147483647 -7ffffffflnp(31): 41dfffffffc00000lnp(31) as float: 4f000000lnp(31) as int: 2147483647 7ffffffflnp(31) as long: 2147483647 7fffffff-lnp(32): -3e10000000200000-lnp(32) as float: -30800000-lnp(32) as int: -2147483648 -80000000-lnp(32) as long: -4294967295 -fffffffflnp(32): 41efffffffe00000lnp(32) as float: 4f800000lnp(32) as int: 2147483647 7ffffffflnp(32) as long: 4294967295 ffffffff-lnp(33): -3e00000000100000-lnp(33) as float: -30000000-lnp(33) as int: -2147483648 -80000000-lnp(33) as long: -8589934591 -1fffffffflnp(33): 41fffffffff00000lnp(33) as float: 50000000lnp(33) as int: 2147483647 7ffffffflnp(33) as long: 8589934591 1ffffffff-lnp(34): -3df0000000080000-lnp(34) as float: -2f800000-lnp(34) as int: -2147483648 -80000000-lnp(34) as long: -17179869183 -3fffffffflnp(34): 420ffffffff80000lnp(34) as float: 50800000lnp(34) as int: 2147483647 7ffffffflnp(34) as long: 17179869183 3ffffffff-lnp(35): -3de0000000040000-lnp(35) as float: -2f000000-lnp(35) as int: -2147483648 -80000000-lnp(35) as long: -34359738367 -7fffffffflnp(35): 421ffffffffc0000lnp(35) as float: 51000000lnp(35) as int: 2147483647 7ffffffflnp(35) as long: 34359738367 7ffffffff-lnp(36): -3dd0000000020000-lnp(36) as float: -2e800000-lnp(36) as int: -2147483648 -80000000-lnp(36) as long: -68719476735 -ffffffffflnp(36): 422ffffffffe0000lnp(36) as float: 51800000lnp(36) as int: 2147483647 7ffffffflnp(36) as long: 68719476735 fffffffff-lnp(37): -3dc0000000010000-lnp(37) as float: -2e000000-lnp(37) as int: -2147483648 -80000000-lnp(37) as long: -137438953471 -1ffffffffflnp(37): 423fffffffff0000lnp(37) as float: 52000000lnp(37) as int: 2147483647 7ffffffflnp(37) as long: 137438953471 1fffffffff-lnp(38): -3db0000000008000-lnp(38) as float: -2d800000-lnp(38) as int: -2147483648 -80000000-lnp(38) as long: -274877906943 -3ffffffffflnp(38): 424fffffffff8000lnp(38) as float: 52800000lnp(38) as int: 2147483647 7ffffffflnp(38) as long: 274877906943 3fffffffff-lnp(39): -3da0000000004000-lnp(39) as float: -2d000000-lnp(39) as int: -2147483648 -80000000-lnp(39) as long: -549755813887 -7ffffffffflnp(39): 425fffffffffc000lnp(39) as float: 53000000lnp(39) as int: 2147483647 7ffffffflnp(39) as long: 549755813887 7fffffffff-lnp(40): -3d90000000002000-lnp(40) as float: -2c800000-lnp(40) as int: -2147483648 -80000000-lnp(40) as long: -1099511627775 -fffffffffflnp(40): 426fffffffffe000lnp(40) as float: 53800000lnp(40) as int: 2147483647 7ffffffflnp(40) as long: 1099511627775 ffffffffff-lnp(41): -3d80000000001000-lnp(41) as float: -2c000000-lnp(41) as int: -2147483648 -80000000-lnp(41) as long: -2199023255551 -1fffffffffflnp(41): 427ffffffffff000lnp(41) as float: 54000000lnp(41) as int: 2147483647 7ffffffflnp(41) as long: 2199023255551 1ffffffffff-lnp(42): -3d70000000000800-lnp(42) as float: -2b800000-lnp(42) as int: -2147483648 -80000000-lnp(42) as long: -4398046511103 -3fffffffffflnp(42): 428ffffffffff800lnp(42) as float: 54800000lnp(42) as int: 2147483647 7ffffffflnp(42) as long: 4398046511103 3ffffffffff-lnp(43): -3d60000000000400-lnp(43) as float: -2b000000-lnp(43) as int: -2147483648 -80000000-lnp(43) as long: -8796093022207 -7fffffffffflnp(43): 429ffffffffffc00lnp(43) as float: 55000000lnp(43) as int: 2147483647 7ffffffflnp(43) as long: 8796093022207 7ffffffffff-lnp(44): -3d50000000000200-lnp(44) as float: -2a800000-lnp(44) as int: -2147483648 -80000000-lnp(44) as long: -17592186044415 -fffffffffff
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -