关于string转化为float, 在float转化为int

zhangjy2001 2003-12-03 05:47:54
我发现一个问题,在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

但输出的是上面的请给位帮我解释!!






...全文
540 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangjy2001 2003-12-04
  • 打赏
  • 举报
回复
结贴
zhangjy2001 2003-12-04
  • 打赏
  • 举报
回复
atof我已经试过了,不行。
看来只能给int 做 补偿了 int + 0.1 .
ywchh 2003-12-03
  • 打赏
  • 举报
回复
不是有atof,atoi等一系列的转换函数吗,没必要自己写吧!
antijpn 2003-12-03
  • 打赏
  • 举报
回复
纯属正常情况,float型的数据是不可能被完整表达的,因为毕竟没有采用BCD,而是直接保存
arfi 2003-12-03
  • 打赏
  • 举报
回复
你把chartofloat换成atof试试

另外参考一下http://expert.csdn.net/Expert/topic/2517/2517892.xml?temp=.8507196

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧