如何将带或不带小数部分的双精度数转换为十六进制字符串 (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 的幂,否则它将重复。