关于string转化为float, 在float转化为int
我发现一个问题,在C语言中,我把一个"123.23" string 转化为 float 的 123.23
后, 在
#include <stdio.h>
float chartofloat(char *p)
{
......
......
}
void main(void)
{
char *p = "123.23";
float f;
int k;
f = chartofloat(p);
/* convert float to int and print int */
printf("f = %f\n", f);
k = f;
printf("k = %d.", k);
k = (f - k) * 1000;
printf("%d\n", k);
}
输出结果:
f = 123.23
k = 123.229
主要我发现我在把float转化为int时,出现了问题。
我希望输出的结果:
f = 123.23
k = 123.23
但输出的是上面的请给位帮我解释!!
问题点数:0、回复次数:5Top
1 楼arfi()回复于 2003-12-03 18:11:20 得分 0
你把chartofloat换成atof试试
另外参考一下http://expert.csdn.net/Expert/topic/2517/2517892.xml?temp=.8507196Top
2 楼antijpn(antijpn)回复于 2003-12-03 18:14:32 得分 0
纯属正常情况,float型的数据是不可能被完整表达的,因为毕竟没有采用BCD,而是直接保存Top
3 楼ywchh(神龙)回复于 2003-12-03 18:44:47 得分 0
不是有atof,atoi等一系列的转换函数吗,没必要自己写吧!
Top
4 楼zhangjy2001(emli)回复于 2003-12-04 09:02:20 得分 0
atof我已经试过了,不行。
看来只能给int 做 补偿了 int + 0.1 .Top
5 楼zhangjy2001(emli)回复于 2003-12-04 09:12:45 得分 0
结贴
Top




