单精度浮点数类型不能利用%.1f精确到一位小数

文章探讨了为什么使用%.1f在double类型变量(5.45)中能精确到一位小数,但换成float类型(5.4)时却不是,涉及浮点数精度、字节大小和有效数字的区别。作者疑惑可能与float类型的有效数字限制有关。

如下列程序所示

int main()
{
	double a = 5.45;//为什么一定要双精度数据才能利用%.1f精确到一位小数
	printf("%.1f", a);
	


	
}

 其中若将a由double类型替换成float类型则会输出5.4,而非四舍五入后的5.5

人尽皆知float类型大小为4个字节,而double类型为8个字节大小

float类型的有效数字为8位,而double为16位

但我仍未弄清二者区别,因为我所输出的无论float类型还是double类型,其有效数字均为7位。

或许float类型不能通过%.1f的方式精确到一位小数也与上述有关吧。

一切尚未有思绪啊!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值