gpt4 book ai didi

c - strtod 在 Qt 项目中使用时截断小数

转载 作者:太空狗 更新时间:2023-10-29 15:49:23 25 4
gpt4 key购买 nike

我目前正在调试有时有效有时无效的代码。它是一个 OBJ 文件加载器,我发现了出现问题的部分:

double val = strtod(str, &endptr);

为了解释这个问题,我会给你一个调用 strtod 后的值的例子。

str = "-0.021344"
val = -0
*endptr = '.'

在该行之后完成错误检查,如果 *endptr != '\0' 则抛出错误。现在当然会抛出错误,因为 strtod 将点标记为数字的结尾,但为什么会这样呢?另请注意,我只在 QT 项目中使用代码时遇到此错误。

感谢您的想法。

最佳答案

也许您正在使用 locale 小数点不是 .。在 strtod 语句之前尝试 setlocale(LC_NUMERIC, "C");

注意:我不知道 locale 和 QT 如何一起工作。您可能想要保存和恢复语言环境...

char *saved_locale;
saved_locale = setlocale(LC_NUMERIC, "C");
/* do your strtod thing */
setlocale(LC_NUMERIC, saved_locale);

关于c - strtod 在 Qt 项目中使用时截断小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7333442/

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