gpt4 book ai didi

C: strtof 单位转换错误

转载 作者:行者123 更新时间:2023-11-30 16:42:42 24 4
gpt4 key购买 nike

我在 strtof 转换方面遇到问题,某些值运行良好,但另一些值返回 +1 或 -1 值。我的程序从文件中读取值,但为了简单起见,我尝试将值直接放入 strtof,它具有相同的行为。

我的简单代码:

#include <stdlib.h>

int main(int argc, char **argv)
{
printf("%f", strtof("17309217",NULL));
}

返回

17309216.000000

与转换“17309216”或“17309215”时给出的值相同。

我做了一些更多的测试,似乎有一个“模式”,“17309214”效果很好,但“17309213”、“17309212”和“17309211”都返回“17309212”。此后“17309210”工作正常,但“17309209”、“17309208”和“17309207”返回“17309208”,依此类推...

此行为的解释是什么?现在我用其他方法转换字符串,我不需要方法来转换它。我只想知道为什么 strtof 这样做,这样我就可以决定什么地方可以使用它,什么地方不能使用它。

我一直在阅读一些与错误转换相关的其他问题,但所有问题都与小数舍入有关,而不是整个单位。

提前致谢,

最佳答案

您正在转换为 32 位 float ,该浮点精度可能无法处理那么多数字。

关于C: strtof 单位转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45729828/

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