我遇到了strtof转换的问题,有些值运行良好,但另一个值返回值+1或-1。我的程序从文件中读取值,但为了简单起见,我试图直接将值写入文件,并且具有相同的行为。C: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为什么这样做,所以我可以决定在哪里使用它,哪里不能。
我一直在阅读一些与错误转换相关的其他问题,但都与小数舍入有关,而不是整个单位。
由于提前,
也许你打算使用** strtod **并使用** double ** s –