如何将带或不带小数部分的双精度数转换为十六进制字符串 (Base-26)?
How to convert from a double with or without a fractional part to a hexaicosadecimal string (Base-26)?
将带或不带小数部分的double转换为十六进制字符串的方法是什么?有哪些提示或可能的捷径?
- 对于任何基数
B
,将小数部分乘以 B
。
- 如果数字 >= 1,分配给一个 int 并根据需要转换为 0-F。
- 只保存前面的分数,从头继续。
这里是二进制的例子。
double d = .2342;
System.out.print(".");
for (int i = 0; i < 20; i++) {
d = 2*d;
int bit = (int)d;
System.out.print(bit);
d = d-bit;
}
System.out.println();
以 20 位精度为 .2342 打印以下内容
.00111011111101001000
请注意,由于分数的浮点乘积会降级,因此必须注意长字符串。除非分数是 .5 的幂,否则它将重复。
将带或不带小数部分的double转换为十六进制字符串的方法是什么?有哪些提示或可能的捷径?
- 对于任何基数
B
,将小数部分乘以B
。 - 如果数字 >= 1,分配给一个 int 并根据需要转换为 0-F。
- 只保存前面的分数,从头继续。
这里是二进制的例子。
double d = .2342;
System.out.print(".");
for (int i = 0; i < 20; i++) {
d = 2*d;
int bit = (int)d;
System.out.print(bit);
d = d-bit;
}
System.out.println();
以 20 位精度为 .2342 打印以下内容
.00111011111101001000
请注意,由于分数的浮点乘积会降级,因此必须注意长字符串。除非分数是 .5 的幂,否则它将重复。