java - Jack Shirazi DoubleToString java优化问题

标签 java string optimization double

在 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());
}

最佳答案

强烈建议:

  1. 创建一个在循环中进行 100,000 或 100 万次 double 字符串转换的基准。

  2. 获取使用“appendFormatted()”的时机

  3. 比较使用标准Java的时间DecimalFormat (自 Java 1.4、2002 起)或 printf Formatter (截至 Java 5,2004 年)

  4. 考虑到这篇文章是在 2000 年写的......他谈到的许多“优化”对于当前的 JDK 和 JVM 来说无疑已经完全过时了。

恕我直言...

关于java - Jack Shirazi DoubleToString java优化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6977330/

相关文章:

java - 如何使用 Java for Jenkins 使用 REST API 进行 POST

java - java 8 Stream API 中的分组依据

c++ - 如何在字符串 vector 中引用字符串的特定字符?

java - 在 Java 中处理元组

performance - Go:通过 slice slice (二维 slice )访问数组时出现意外性能

java - jvm如何优化循环代码?

java - .out 和 .log 文件有什么区别

java - 将 Java 对象转换为 JSON 的步骤

javascript - 转换字符串以访问它的 dom 元素

java - 现代 JVM 是否优化了简单的内联匿名类分配?