Redian新闻
>
信用卡取消多久后 可以重新申请
avatar
信用卡取消多久后 可以重新申请# Money - 海外理财
i*1
1
float f = 1.23;
double d = 1.23;
if (f == d) printf("equal");
else printf("not equal");
这个我在vs 32位系统,64位cpu上结果为:not equal。如果把1.23换成1.25就是“
equal".
这个怎么分析?
avatar
l*y
2
如题
谢谢了
是不是基本上就申请不到了啊
avatar
r*h
3
比较浮点数不能用 ==
这个是常识了吧。。。
要判断两个浮点数相等,应该用(f1-f2)
【在 i****1 的大作中提到】
: float f = 1.23;
: double d = 1.23;
: if (f == d) printf("equal");
: else printf("not equal");
: 这个我在vs 32位系统,64位cpu上结果为:not equal。如果把1.23换成1.25就是“
: equal".
: 这个怎么分析?

avatar
l*i
4
because 1.25 = 1 + 1/2^2, and can be represented precisely in binary.
you might want to read IEEE 754 in wikipedia, or the topcoder tutorial to
learn more about floating point arithmetic. It is not hard, just less known.
avatar
f*t
5
判断f==d的时候会发生类型转换,因为1.23不能用有限位2进制表示,所以f和d其实都
是近似值。显然因为精度不同,f和d是不等的。
f转成double后,精度增加值不变,所以肯定不等于d。
1.25为什么相等楼上解释了
avatar
h*6
6
如果比较两个有理数,最好转化成分数来比较。
avatar
y*o
7
this is the right solution
a threshold is desired

【在 r**h 的大作中提到】
: 比较浮点数不能用 ==
: 这个是常识了吧。。。
: 要判断两个浮点数相等,应该用(f1-f2)
avatar
l*a
8
正解

【在 r**h 的大作中提到】
: 比较浮点数不能用 ==
: 这个是常识了吧。。。
: 要判断两个浮点数相等,应该用(f1-f2)
avatar
m*p
9
楼主要被大家打击了。
赶紧多看看基础书。 加油加油。

【在 i****1 的大作中提到】
: float f = 1.23;
: double d = 1.23;
: if (f == d) printf("equal");
: else printf("not equal");
: 这个我在vs 32位系统,64位cpu上结果为:not equal。如果把1.23换成1.25就是“
: equal".
: 这个怎么分析?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。