在 Jack Shirazi 的书“Java Performance Tuning”中,他提出了一种优化从 double 到 String 的转换的方法。 优化代码可以在这里找到:http://onjava.com/onjava/2000/12/15/graphics/DoubleToString.java
但是,对于 2 位数字显示的特定数字似乎存在一些问题,当使用 0.0951(直到 0.0999)的方法时,它返回“0.0a”,这显然是不正确的。 使用 0.0949 运行时,它会正确返回 0.09。 使用 1.0951 运行它时,它会正确返回 1.10。
知道哪里出了问题吗?我试图了解细节,但还没有找到罪魁祸首。
这是我的主要测试:
public DoubleToString() {
double d1 = 0.0949;
double d2 = 0.0951;
StringBuffer sb = new StringBuffer();
sb.append("display d1 = ");
appendFormatted(sb, d1, 2, '.', ',', 3, '-', '-');
sb.append(" : ");
appendFormatted(sb, d2, 2, '.', ',', 3, '-', '-');
System.out.println(sb.toString());
}
最佳答案
强烈建议:
创建一个在循环中进行 100,000 或 100 万次 double 字符串转换的基准。
获取使用“appendFormatted()”的时机
比较使用标准Java的时间DecimalFormat (自 Java 1.4、2002 起)或 printf Formatter (截至 Java 5,2004 年)
考虑到这篇文章是在 2000 年写的......他谈到的许多“优化”对于当前的 JDK 和 JVM 来说无疑已经完全过时了。
恕我直言...
关于java - Jack Shirazi DoubleToString java优化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6977330/