gpt4 book ai didi

java - 如何将包含 double 值的 char 数组转换为 double 变量,而不创建 String 对象的开销?

转载 作者:行者123 更新时间:2023-12-02 10:07:37 24 4
gpt4 key购买 nike

我的问题符合this one ,但我需要在不产生任何开销的情况下执行此操作。

java中的 native parseDouble()接受一个字符串,但我的情况给了我一个原始内存缓冲区,我可以通过buf.getByte(intposition)访问。由于我的用例一次处理数十万个这样的 double ,因此为每个 double 创建一个新字符串既笨重又缓慢。

因此,我需要一种方法从 double 的字节表示(11.1 的缓冲区保存表示 {'1' '1' '.' '1'} 的字符/字节)到 Double,而不创建额外的对象这样做时在堆上。

如有任何帮助,我们将不胜感激!谢谢。

最佳答案

粗糙、老套且不适用于底片,但你可以做一些跑腿工作来支撑它:

private static double toDouble(byte[] bs) {
boolean onLeft = true;
double left = 0;
double right = 0;

for (byte b : bs) {
if (b == '.') {
onLeft = false;
} else if (onLeft) {
left *= 10;
left += b - '0';
} else {
right += b - '0';
right /= 10;
}
}

return left + right;
}

还有:

 System.out.println(toDouble(new byte[] { '1', '1', '.', '1' }));

产量11.1。

关于java - 如何将包含 double 值的 char 数组转换为 double 变量,而不创建 String 对象的开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55229538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com