C++ 输入的是1.3变1.29999995问题

C++ 输入的是1.3变1.29999995问题今天一位粉丝在评论中问到了这个问题,我简单的说了原理和改进方法,将float改为double就可以了,下面我进行详细整理先说一下debug是啥意思马克2号(Harvard Mark II)编制程序的葛丽丝·霍波(Grace Hopper)是一位美国海军准将及计算机科学家,同时也是世界最早的一批程序设计师之一。有一天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

今天一位粉丝在评论中问到了这个问题,我简单的说了原理和改进方法,将float改为double就可以了,下面我进行详细整理




先说一下debug是啥意思

马克2号(Harvard Mark II)编制程序的葛丽丝·霍波(Grace Hopper)是一位美国海军准将及计算机科学家,同时也是世界最早的一批程序设计师之一。有一天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,霍波诙谐的把程序故障统称为“臭虫(bug)”,把排除程序故障叫debug,而这奇怪的“称呼”,竟成为后来计算机领域的专业行话。

下面用网上的程序做例子

在这里插入图片描述
当你设置断点监控变量时,观察调试窗口里的m,发现并不是输入的1.3,而是1.29999995。可是明明输入的1.3,为啥就变了呢?

仔细查看程序,发现变量m定义的是float类型,单精度浮点数

浮点数在内存中的存储机制和整型数不同,其有舍入误差,在计算机中用近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法。所以浮点数在运算过程中通常伴随着因为无法精确表示而进行的近似或舍入。

我们知道在C++中浮点数类型有float、double和long double,那么它们之间到底有什么差别呢?

C++中浮点数类型差别是:

  • 在内存中占有的字节数不同
  • 有效数字位数不同
  • 所能表示数的范围不同

ps:数据类型详细介绍请见我另一篇博客

所以,我们将程序中的float修改为double就可以了,强制转换的时候也最好转换为double类型

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170915.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月18日 下午1:46
下一篇 2022年8月18日 下午1:46


相关推荐

  • 如何学习verilog,如何快速入门?

    前言害怕真的有人不知道verilog是什么东西,于是就给把百度给搬来了!VerilogHDL是一种硬件描述语言,以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。VerilogHDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由GatewayDesignAutomation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。之前的文章《IC前端

    2022年4月7日
    64
  • 怎么用python连接数据库_python连接pg数据库

    怎么用python连接数据库_python连接pg数据库实现步骤:一、使用mysql.connector1、导入msql的包2、创建连接对象3、使用cursor方法获取操作游标4、fetchall方法获取数据,for循环进行输出5、最后关闭连接对象importmysql.connector#创建连接对象#参数分别为:ip地址,用户名,密码,库名mydb=mysql.connector.connector(host=”192.168.139.128″,user=”root”,passwd=”root”,

    2025年8月8日
    6
  • git bash使用chmod不生效

    git bash使用chmod不生效问题现象在 windows 下使用 gitbash 执行 shell 命令 chmod xtest sh rw rr1OMEApr211 08test sh 问题原因 shell 脚本前面没有加上 bin bash

    2026年3月17日
    2
  • win10 系统WLAN不见了,win10找不到wifi选项的解决办法

    win10 系统WLAN不见了,win10找不到wifi选项的解决办法问题如下图所示:可以看到没有WLAN设置的选项而且是无网络的状态解决办法:两步就好了第一步,以管理员身份运行CMD点击Cortana输入cmd鼠标右键命令提示符以管理员身份运行还有一种办法就是进入C:\Windows\System32还是右键以管理员身份运行两种方法都可以第二步:使用netshwinsockreset…

    2022年7月27日
    5
  • “龙虾”养成记:OpenClaw 保姆级上手指南

    “龙虾”养成记:OpenClaw 保姆级上手指南

    2026年3月13日
    1
  • 数据库sql语句练习题「建议收藏」

    1、统计同一个房屋下的车辆个数:SELECThouseid,COUNT(*)FROMt_carGROUPBYhouseId;2、在1的基础上,统计拥有最多车辆个数的房间号SELECThouseId,COUNT(*)ascar_numFROMt_carGROUPBYhouseIdORDERBYcar_numDESCLIMIT1;

    2022年4月10日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号