首先,使用flags-Wall、-ansi、-pedantic编译。没有警告或错误。调试也没用。
基本上,我的代码运行良好,但是当我使用strtof()将标记从字符串转换为浮点时,返回非常奇怪和意外的结果
以下代码部分是:
printf("token is %s\n", token);
newstockdata->unitPrice = strtof(token, NULL);
printf("price is %d\n", newstockdata->unitPrice);
newstockdata被分配到正确的大小:unitPrice是一个float变量:第一个printf语句打印“150.00”:第二个printf语句打印“0”,但经过几次迭代后,它返回一个非常长的一致数字。有什么帮助吗?
最佳答案
你必须处理溢出的情况。调用strtof()
后,检查errno
是否溢出。如果您认为值可能很长,可以使用double
或long double
。
关于c - strtof()在C中产生奇怪的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28757975/