返回信息流float a = 0.1f;
float b = 0.2f;
float c = 0.3f;
float d = a + b;
if (c == a + b)
cout << "c == a + b" << endl;
else
cout << "c != a + b" << endl; // 输出这句
if (c == d)
cout << "c == d" << endl; // 输出这句
else
cout << "c != d" << endl;
为啥输出结果是"c != a + b"和"c == d"呢?
这是一条镜像帖。来源:北邮人论坛 / cpp / #82137同步于 2014/9/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
请教判断浮点数是否相等
xiaobing307
2014/9/4镜像同步16 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
为啥我这显示的都是等于
要不你试试 if(c==float(a+b)) 这样会相等么
【 在 xiaobing307 (小兵) 的大作中提到: 】
: float a = 0.1f;
: float b = 0.2f;
: float c = 0.3f;
: ...................
if(c==float(a+b)) 这样会相等, 我用的vs2010
【 在 wangxiaobupt 的大作中提到: 】
: 为啥我这显示的都是等于
: 要不你试试 if(c==float(a+b)) 这样会相等么
:
: ...................
觉得可能在相加的时候 类型已经变成double了 所以导致不相等
我这边显示两个都是相等
【 在 xiaobing307 的大作中提到: 】
: if(c==float(a+b)) 这样会相等, 我用的vs2010
改成double就都不相等了,因为double的表示范围大?
double a = 0.1;
double b = 0.2;
double c = 0.3;
double d = a + b;
if (c == a + b)
cout << "c == a + b" << endl;
else
cout << "c != a + b" << endl;
if (c == d)
cout << "c == d" << endl;
else
cout << "c != d" << endl;
【 在 wangxiaobupt 的大作中提到: 】
: 觉得可能在相加的时候 类型已经变成double了 所以导致不相等
: 我这边显示两个都是相等
:
: ...................
浮点数要完全相等 很困难 我感觉有个比较到一定精度就可以了
【 在 xiaobing307 的大作中提到: 】
: 改成double就都不相等了,因为double的表示范围大?
: double a = 0.1;
: double b = 0.2;
: ...................