浮点型与整形的比较问题

浮点型与整形的比较问题


  • 目前本人的理解是:
  • 与浮点数的存储方式有关
  • 有些浮点数在内存中不能准确的保存
  • 不能旦旦是你所看到的数字的来进行四舍五入,
  • 比如 上面的代码中 2.335 ——》在内存中可能是 2.333499995 的(并不能完全精确的保存),这个数值( 2.333499995 )四舍五入的结果就是 2.33

代码:

#include<stdio.h>
/*
* float 与 int 类型比较判断中的问题
*/
int main() 
{
	int num = 9;
	float fnum = 8.99999999F;
	if (fnum == num)
	{
		printf("相等\n");
	}
	else
	{
		printf("不相等\n");
	}

	return 0;
}


结果:

在这里插入图片描述


解析:

  • 首先 (fnum == num ),一个为float 类型,一个为 int 类型,两个类型不一致
  • 存在整形提升,num 先提升为 float 类型,而因为浮点数的存储的原因;
  • 精确度有限,其中的准确性,不好百分百确定的

所以不要使用浮点数的值来进行比较判断,以及注意其中存在的类型提升


结尾:

限于自身的水平,其中存在的错误希望大家给予指教,韩信点兵——多多益善,谢谢大家!后会有期,江湖再见!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值