float最后小数位59.400000变成了59.400002

如题

#include<stdio.h>
main()
{
int Age;
char Sex;
float Height, Weight;
Age=31;
Sex='M';
Height=1.68;
Weight=59.4;
printf("人的基本信息如下:\n");
printf("年龄是:%d岁,性别是:%c\n",Age,Sex);
printf("身高是:%f米,体重是:%f千克\n",Height,Weight);
return 0;
}

img

想问一下大家造成这种情况的原因,是c++6.0本身的问题吗?麻烦大家了

这是正常现象,浮点数在存储的时候会有误差.
浮点数在电脑中是近似存储的,具体可以查阅相关资料
大体上来说,一个浮点数在电脑中被分解成1.xxx*2^n的形式,即整数位为1的有限小数乘上2的n次幂的形式
其中1.xxx部分(称为底数)是以二进制存储的(指数部分和符号位也是二进制存储的),由于二进制位数有限,所以底数和实际值之间有一定差距,这个差距就会反映到存储值上,比如59.400002的末尾就出现了误差
这是正常现象,只要你的程序其他部分没有问题,就没什么问题
有帮助望采纳~

我在vs2019上执行,也是有误差得,然后就百度了一下,这真是正常现象,与计算机底层对小数点后面得存储有关,你可以百度看看~

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632