c – 将一个整数乘以一个浮点数字 – 需要“F”吗?
发布时间:2020-12-16 03:05:36 所属栏目:百科 来源:网络整理
导读:这是: int i = 100 * 0.6; 不太正确吗? int i = 100 * (0.6F); 对于这样一个简单的问题,我深表歉意,但我没有记住数据类型促销的所有规则,我不确定如何验证这一点. 解决方法 它可以有所作为.对于 example : int i = (1 24) + 3;printf("%dn",(int)(i * 0.
这是:
int i = 100 * 0.6; 不太正确吗? int i = 100 * (0.6F); 对于这样一个简单的问题,我深表歉意,但我没有记住数据类型促销的所有规则,我不确定如何验证这一点. 解决方法
它可以有所作为.对于
example:
int i = (1 << 24) + 3; printf("%dn",(int)(i * 0.6)); // 10066331 printf("%dn",(int)(i * 0.6f)); // 10066332 原因是第一次的计算是以双精度完成的,后者是单精度的.单精度不能表示大于1的所有整数,24. 另一个example(由@EricPostpischil在下面的评论中提供): int i = 100; printf("%dn",(int)(i * 0.29)); // 28 printf("%dn",(int)(i * 0.29f)); // 29 这里的原因是双精度情况下的中间结果略低于29,因此截断到28. 所以我建议允许双重精度(即省略f / F)(然后使用round()而不是依赖于隐式截断),除非你有一个很好的理由去做. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |