关于int转换为float

jody_go 2009-08-31 05:32:08
有谁晓得怎么将一个int转换为float型啊?
急!!!!!!!!
...全文
768 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
VICTOR_CYC 2009-09-01
  • 打赏
  • 举报
回复
在编译器里面试一下不就知道了
coolcoffee4051982 2009-09-01
  • 打赏
  • 举报
回复
学习,了。
shangue 2009-09-01
  • 打赏
  • 举报
回复
精度低的向精度高的自动转换
zbihong 2009-08-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 victor_dinho 的回复:]
C/C++ codeint a=5;float b;
b= (float)a;
[/Quote]
强制转换!如果是float转int那就有难度了!!
rabbitgoat 2009-08-31
  • 打赏
  • 举报
回复
学习,i=len;不对,应该是len-1
周成风 2009-08-31
  • 打赏
  • 举报
回复
建议数字转型使用boost::numeric_cast,当转型失败将抛出异常!
icerlion 2009-08-31
  • 打赏
  • 举报
回复
static_cast<FLOAT>(nValue);
看一下effective C++
Dave888Zhou 2009-08-31
  • 打赏
  • 举报
回复
不难呀,可以像9楼一样用pow函数。不想用的话也可以,在int_to_float函数里先求10的n次方的值10^n(对10进行n次累乘即可),然后用num/10^n即可。
mstlq 2009-08-31
  • 打赏
  • 举报
回复
请看9楼……
jody_go 2009-08-31
  • 打赏
  • 举报
回复
就是要实现:
num为我要转换的整数,n为我需要转换的位数,
比如 int_to_float(456885,5),那最后函数的返回结果应该要为4.56885啊!
thinkboy234 2009-08-31
  • 打赏
  • 举报
回复
学习啊
昨夜无风 2009-08-31
  • 打赏
  • 举报
回复
.......

for (int i=len-1; i>len-n-1; i--)
{
buf[i+1] = buf[i];
}

buf[i] = '.';
buf[len] = '\0';

.........
theone11 2009-08-31
  • 打赏
  • 举报
回复
楼主究竟想干什么?1234567890这个整数难道就不能用float来表示么?谁告诉你float就是小数的?
jody_go 2009-08-31
  • 打赏
  • 举报
回复
嗯,
我自己写了一个,不过不晓得为什么就有时候不正确啊?
float int_to_float(int num, int n)
{
float value;
int len = 0;
char buf[MAX];

itoa(num, buf, 10);
len = strlen(buf);

for (int i=len; i>len-n-1; i--)
{
buf[i+1] = buf[i];
}

buf[len-n] = '.';
buf[len+1] = '\0';

value = atof(buf);

return value;
}

测试的时候,打印buf的时候都正确,但通过atof转换后就出错了啊·~~
为什么啊!@@@@!!!!1
wisaa 2009-08-31
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <math.h>

double int_to_float(int num, int n)
{
return (double)num/pow(10.0,n);
}
void main()
{
int a = 1234;
int b = 3;
printf("%.3lf", int_to_float(a, b));

}
mstlq 2009-08-31
  • 打赏
  • 举报
回复
那就是
(double)num/pow(10.0,n);
jody_go 2009-08-31
  • 打赏
  • 举报
回复
哦,
那我现在设计个函数:
float int_to_float(int num, int n)
{

}
其中num为我要转换的整数,n为我需要转换的位数,
比如 int_to_float(456885,5),那最后函数的返回结果应该要为4.56885啊!
braveyly 2009-08-31
  • 打赏
  • 举报
回复
int能表示1234567890这么多位吗?
int和float的存储格式也不一样的
Victor_Dinho 2009-08-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jody_go 的回复:]
这样行吗?
我现在的需求是将一个整数以4位float来显示,
比如整数1234567890将转换为123456.7890啊?

我有个拙见,就是先将1234567890转换为一个串“1234567890”,再将这个串转换为float,不晓得行不?


[/Quote]

float a = 1234567890/10000.0;
就可以了~~
影子Sirk 2009-08-31
  • 打赏
  • 举报
回复
直接强行转换就行了、、没必要那么麻烦
加载更多回复(4)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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