【问题标题】:Algorithm to convert a double to a char array in Java (without using objects like Double.toString or StringBuilder)?在 Java 中将 double 转换为 char 数组的算法(不使用 Double.toString 或 StringBuilder 等对象)?
【发布时间】:2012-04-10 16:47:14
【问题描述】:

有人知道我在哪里可以找到该算法吗?它采用双精度和 StringBuilder 并将双精度附加到 StringBuilder 而不创建任何对象或垃圾。当然我不是在找:

sb.append(Double.toString(myDouble));

// or

sb.append(myDouble);

我尝试查看 Java 源代码(我确信它以某种方式做到了),但我看不到任何代码/逻辑块足够清晰,可以重复使用。

【问题讨论】:

  • 为什么sb.append(myDouble); 不符合您的要求?
  • @Jesper 它创建了很多对象。
  • 如果 Java 源代码“以某种方式做到了”,那么为什么相同的 Java 源代码尚未在 StringBuilder.append(double) 中使用相同的技术?如果你有它,不使用这种最佳技术似乎相当浪费。这让我怀疑他们要么没有那个代码,要么它不是最优的,至少在你的 JVM 实现者看来是这样。

标签: java algorithm types numbers primitive-types


【解决方案1】:

我是为 ByteBuffer 写的。你应该能够适应它。将其写入直接 ByteBuffer 可以省去将其转换为字节或将其复制到“本机”空间的麻烦。

public ByteStringAppender append(double d)

如果您将其记录到文件中,您可能会使用整个库,因为它可以持续每秒写入大约 2000 万次双打。它可以在写入内存映射文件时无需系统调用来执行此操作。

【讨论】:

  • 顺便说一句:它产生的字符串可以比内置字符串短。 (按数字)这是因为它检查它写入的值是否与双精度值具有相同的表示,而内置函数有时会谨慎地添加一个额外的数字。
猜你喜欢
  • 2015-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 2011-11-19
  • 2020-02-13
  • 2015-09-02
  • 1970-01-01
相关资源
最近更新 更多