何新宇 2022-02-28 22:44 采纳率: 50%
浏览 47
已结题

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本身的问题吗?麻烦大家了

  • 写回答

3条回答 默认 最新

  • 关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月8日
  • 已采纳回答 2月28日
  • 创建了问题 2月28日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题