gpt4 book ai didi

c++ - 从字符串到 double 的转换 - 可能性和错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:50:14 27 4
gpt4 key购买 nike

我知道字符串 2.34 永远不会等于 double 2.34。无论您尝试过什么库或算法(lexical_cast、atof)。另外 2.3400 不能表示为 double 类型。相反,它将等于 2.3399999999999999 。一些背景知识我正在开发一个应用程序,该应用程序使用其 api 将值传递给外部应用程序。将其视为某种交易应用程序。用户可以使用应用程序 api 传递值,或者用户可以直接使用应用程序传递值。现在当用户直接使用应用程序并且用户输入 2.34 时,值被处理为 2.34 但是当我使用需要双倍的 API 时作为参数,我传递了 2.34,它传递为 2.3399999999999999,这是 Not Acceptable 。我的问题是应用程序将如何处理这个问题,有没有办法将 2.34000.. 存储在 double 值中以便我可以将它传递给 API?

最佳答案

如果您需要通过采用 double 的 API 传递十进制值但是您需要获得准确的值,问题不大:只要您不使用超过 std::numeric_limits<double>::digits10 的值数字,您可以恢复原始十进制,尽管不一定是相同的表示(尾随小数零将丢失)。为此,您需要将原始十进制字符串转换为最接近的表示形式 double然后使用合适的算法再次恢复最佳十进制表示。 C 和 C++ 标准库中的解析和格式化函数将为您正确地完成这项工作。

请注意,您不应该尝试对 double 进行任何算术运算要恢复原始十进制值时的值:double 的结果算术将使用二进制舍入,并且值不会是最接近的十进制值。但是,只要您只传输 double值,没有问题。

关于c++ - 从字符串到 double 的转换 - 可能性和错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18647034/

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