新微赢技术网
标题:
[求助]四舍五入2位之迷惑
[打印本页]
作者:
蓝血腥人
时间:
2009-11-3 04:16
标题:
[求助]四舍五入2位之迷惑
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
double x;
cin>>x;
x+=0.005;cout<<x<<endl;
double y=(int)(x*100);
cout<<y<<endl;
x=(double)(y/100);
cout<<x;
system("PAUSE");
return EXIT_SUCCESS;
}
你输入3.145试试
X明明变了,那里为什么又回去了
作者:
づ嗳嘚亽鈊↑
时间:
2009-11-3 04:16
哇塞
类型转换精度丢失这么严重
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
double x;
cin>>x;
x+=0.005;cout<<x<<endl;
double y=(int)(x*1000);
cout<<y<<endl;
x=(double)(y/1000);
cout<<x;
system("PAUSE");
return EXIT_SUCCESS;
}
LZ,那里精度丢失了,原因不明
大家用我这个输入3.145 试试
作者:
水中de云
时间:
2009-11-3 04:16
2006-8-22 16:29:59
song4
等 级:贵宾
威 望:38
帖 子:1531
专家分:0
注 册:2006-3-25
第 4 楼 得分:0
是呀
是呀
编译器
double x=7;
这也会转变的
我说的是这里精度丢失真大
作者:
淡淡的烟草味
时间:
2009-11-3 04:16
用VC6.0和VS2005结果如下:
3.145
3.15
315
3.15
请按任意键继续. . .
用DEV-C++结果如下:
3.145
3.15
314
3.14
请按任意键继续. . .
真不知道DEV-C++为什么得到不同的结果
作者:
天语悠悠
时间:
2009-11-3 04:16
我用DEV也郁闷着呢
作者:
君临贵妃
时间:
2009-11-3 04:16
你去研究研究吧,回来后告诉我,呵呵
作者:
温柔乡
时间:
2009-11-3 04:16
x*=100;
double y=(int)(x);
与
double y=(int)(x*100);
不等价,呜乎哀哉
而且这种情况,只出现在小数点为0.05上面
莫非又是1.0!=1.0的问题?
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2