java - 将 Java double 映射到 String 并保留排序顺序

标签 java double

我正在寻找方法String doubleToString(double d) ,满足以下条件:

对于任意一对 double d1d2如果Double.compare(d1, d2) < 0然后doubleToString(d1).compareTo(doubleToString(d2)) < 0 .

为了说明需求,我为 int 编写了类似的方法类型:

public static String intToString(int i) {
    String string = Integer.toHexString(i - Integer.MIN_VALUE);
    return "00000000".substring(string.length()) + string;
}

结果(每一个 String 都大于前一个):

intToString(-2147483648) = intToString(0x80000000) = "00000000"
intToString(-10)         = intToString(0xfffffff6) = "7ffffff6"
intToString(-1)          = intToString(0xffffffff) = "7fffffff"
intToString(0)           = intToString(0x0)        = "80000000"
intToString(1)           = intToString(0x1)        = "80000001"
intToString(10)          = intToString(0xa)        = "8000000a"
intToString(2147483647)  = intToString(0x7fffffff) = "ffffffff"

我想要的是 double 具有相同的行为方法的。

最佳答案

您可以将 double 转换为长整型数,然后使用与处理整数类似的方法。我假设以下方法可以按您的意愿工作(NaN 被视为最大数字):

public static String doubleToString(double d) {
    final long bits = Double.doubleToLongBits(d);
    final String s = Long.toString(bits);
    return (bits < 0 ? "--------------------" : "00000000000000000000").substring(s.length()) + s;
}

输入和输出示例:

[-Infinity, -1.7976931348623157E308, -4.9E-324, -0.0, 0.0, 4.9E-324, 1.7976931348623157E308, Infinity]
----4503599627370496
----4503599627370497
-9223372036854775807
-9223372036854775808
00000000000000000000
00000000000000000001
09218868437227405311
09218868437227405312

关于java - 将 Java double 映射到 String 并保留排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44055173/

相关文章:

ios - 在保持准确性的同时将 double 转换为 NSDecimalNumber

java.lang.NumberFormatException : For input string: "1,167.40" 异常

Java - 不兼容的类型 : boolean cannot be converted to int

java - 正则表达式通过使用运算符(!,和,(,),|)拆分所有字符串的开始和结束位置来获取字符串数组在Java中

javascript - 在 JavaFX 中访问 Javascript 的返回值

java - 如何更新测试类中intellij idea插件的持久状态?

java - 如何使用 stream().sorted() 对带有对象的 ArrayList 进行排序

c - 如果定义 float ,是否需要指定 x.yf?

string - 将 long double 转换为没有科学记数法的字符串(Dart)

java - 邻接矩阵的图形实现和初始化