【C/C++】C++ 浮点数

C++ 浮点数

计算机将(2.5、3.64564)这样的值分成两部分存储。一部分表示值,另一部分(缩放因子)用于对值进行放大或缩小。

浮点数的两种表示方法

1. 使用常用的标准小数点表示法(如3.1415926)
2. E表示法(如2.52e+8==252 000 000)

​ 需要注意的是:

1. 既可以使用E,也可以使用e
2. 指数可以是正数,也可以是负数
3. 数字中间不能有空格(7.2 E6是错误的)

void main()
{
    float f1 = 3834e-10;
    float f2 = 3834/1e10,f3 = f1;	
	//输出f1
    std::cout << "当前输出为f1:" << f1 << std::endl;
	//输出f2
    std::printf("当前输出为f2:%.10f\n",f2);
	//输出f3
    std::printf("当前输出为f3:%.10f\n", f3);
    
    //int转float
    float f4 = 10 / 3; //10和3 被默认为两个int型变量  赋值操作向下取整
    std::printf("当前输出为f4:%.10f\n", f4);  //f4=3.0
    float f5 = 10.0 / 3.0;
    std::printf("当前输出为f5:%.10f\n", f5);	 // 10.0/3 = 10/3.0 = 3.33

}

输出结果如下所示:

浮点数优缺点

  • 优势

    1. 可以表示整数之间的值
    2. 由于有缩放因子,表示范围较大
  • 不足

    1. 浮点运算的速度比整数运算慢
    2. 精度降低(如下所示)
void main()
{
	//该程序将f6加1,然后减去1,对结果没有影响
	//原因在于f6是一个左边有23位的数字,float只保存该数字前6位或者前7位,因此修改之后的数字不会对这个值有影响
	float f6 = 2.34E+22f;
	float f7 = f6 + 1.0f;

	std::cout << "f6:" << f6 << std::endl << "f7-f6:" << f7 - f6 << std::endl;
	std::printf("当前输出为f6:%.1f\n当前输出为f7-f6:%.1f\n", f6, f7-f6);
}

输出结果如下:
运行结果2
首先这不是计算问题,C++中float的运算是如此,只保留六位有效数值。
使用%f可以控制小数点前后的个数,如%2.3f表示输出小数点前2位,小数点后三位(但有效位数仍然是六位)。

	float a = 50.25;
	float b = 11.17; 
	std::cout << "a+b:" << a + b << std::endl;//a + b=61.42
	std::printf("a+b=%f\n",a + b);//a + b = 61.419998
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧恩意

如有帮助,感谢打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值