gpt4 book ai didi

c++ - 在 C++ 中以高性能将 double 转换为 char*

转载 作者:IT老高 更新时间:2023-10-28 12:56:20 28 4
gpt4 key购买 nike

我的应用程序需要将 double 值转换为 char* 以写入仅接受字符的管道。执行此操作的常用方法是使用 sprintf() 函数或使用 iomanip.h 头文件中的 ostringstream

事实证明,这两者的表现都非常糟糕。而且我的应用程序需要经常进行这种转换,以至于它成为主要的瓶颈。

还有其他功能可以使用吗?我可以使用什么逻辑来编写高效的转换函数?到目前为止,我唯一能想到的就是使用除法和 mod 操作来获取每个单独的数字,并将这些数字附加到 char* 以获得整个 double 值。不过,这似乎不是一个好方法,而且本身的性能可能会很差。

提前感谢您的想法。

编辑:关于如何使用 char* 存在一些混淆。 char* 将是写入管道的 fwrite 函数的参数。

最佳答案

如果您想打印 double 类型可以支持的任何数字,请使用那里的任何库来完成这项工作。它可以拯救你的理智:Why does "dtoa.c" contain so much code?

如果您想以 double 类型打印数字的子集。例如,小数点后最多4位,小数点前不超过5位,则可以将数字四舍五入并转换为int类型,然后再使用除法和mod打印出来。我可以确认此方法的性能。


编辑:如果您最初的目的是发送数据进行通信,那么发送 double 的二进制形式将是最快和最准确的方法(不会因转换而损失精度)。其他答案中解释了执行此操作的方法。

关于c++ - 在 C++ 中以高性能将 double 转换为 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10749585/

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