关于精度问题求教

saramand9 2008-03-23 08:34:39

例如:

#include<iostream>
using namespace std;
int main()
{
double a =4.14;
int b;
b=a*100.00;
cout<<b<<endl;
return 0;
}

像这样的结果得到的是 413而不是我们想要的414 ///
请问有没有简单而有效的方法来解决类似的精度问题
...全文
60 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttkk_2007 2008-03-23
  • 打赏
  • 举报
回复
兄弟,你是把x乘以100有赋值给了x,还是double的
saramand9 2008-03-23
  • 打赏
  • 举报
回复

哎..刚刚问到一种比较好的方法...大家参考参考那。.呵呵

#include<iostream>
using namespace std;
int main()
{
double x=4.14;
x=x*100;
char str[121]; int num;
sprintf(str,"%lf",x);
cout<<str<<endl;
sscanf(str,"%d",&num);

cout<<num<<endl;

return 0;
}
hastings 2008-03-23
  • 打赏
  • 举报
回复
int cast(double d)
{
static const double eps=1.0e-6;
return int(d+eps);
}
int main()
{
double a =4.144 ;//413.9999
int b;
b=cast(a*1000.00);
cout <<b <<endl;
return 0;
}
星羽 2008-03-23
  • 打赏
  • 举报
回复
浮点本来就是不精确的,你转int当然有精度问题
ttkk_2007 2008-03-23
  • 打赏
  • 举报
回复
什么意思
saramand9 2008-03-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ttkk_2007 的回复:]
你还是把b换成double的吧
[/Quote]

如果double型可做数组下标的话- -
ttkk_2007 2008-03-23
  • 打赏
  • 举报
回复
你还是把b换成double的吧

64,184

社区成员

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

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