语言中的浮点数

news2024/11/14 15:14:19

浮点数相比定点数或者整数,为了处理小数点引入了指数,导致小数点的位置根据不同浮点数而不同,故名为Floating Point Number. 一般而言,IEEE754标准被大部分编程语言的浮点数使用,它节省了浮点数的保存空间。如不然,浮点数可能按每一位ASCII码保存,包括整数部分、小数点和小数部分,占用空间不可控制。

小数点位置浮动的原因

浮点数整数部分长度不一,为了统一整数部分和指数部分,把所有整数都转换成0.xx格式,造成小数点位置不一。

浮点数和整数

  • 浮点数的位级存储和整数完全不同,整数1和浮点数1.0存储也截然不同。通过调试器查看int变量和float变量的内存存储,或者写一段dump字节代码比较其区别,还有一种方式,C/C++ %a格式串可用十六进制形式表达浮点数(其他编程语言可能不适用)。
  • 不同浮点数位级存储也不相同,float和double是不同的。
  • 浮点数和整数运算,整数会默认先转换成浮点数。
    f = f + i;
    cvtsi2ss xmm0,dword ptr [i]
    addss xmm0,dword ptr [f]
    movss dword ptr [f],xmm0

浮点数指令

早期计算机根本没有浮点数处理ALU,浮点数靠软件整数去模拟,性能极低。后来,加入了浮点数FPU,浮点数处理速度极大提升,比如xmm寄存器。

  • double f = 2.25; // IEEE 754内存存储
  • 00501056 movsd xmm0,mmword ptr [__real@4002000000000000 (0502108h)]

精确性

浮点数的表达方式利用整数位和小数位计算的2n数值(n可正可负)计算,必然出现不准确。1.5可精确表示,0.3却无法精确表示。有的书籍上提到,浮点数不要用==或!=判断,其实是考虑有不精确表达的可能。在商业银行金融领域,这是不能容忍的。

  • COBOL编程语言是上古时期可以处理小数精确度很好的一门语言,因为它真的用模拟的形式保存小数点和小数位,而非IEEE 754这种压缩版。
  • C#引入了decimal类型处理小数点更精确。如下两种不同类型变量输出的结果第一个会更精确。
    decimal d = 3.14159265124m;
    float f = 3.14159265123f;

浮点数的类型

尽管4字节的浮点数可表达相当大的数值,但对于人类而言,总不够用。一般而言,浮点数有3种类型,单精度的float和双精度的double以及更长的long double, 可参考:数据类型大小

  • C语言为了区分float和double, 输入时用%f代表float, %lf代表double, 但对于输出%f和%lf作用相同。
  • C语言中float类型是默认转换成double去处理,如下图所示。
  • C99引入了long double (%Lf), 注意并不意味long double一定比double要长,根据编译器选择。


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2131980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

思维导图模板,看完这些步骤学会制作

思维导图模板,思维导图是一种非常有效的信息组织工具,它将复杂的信息以图形化的形式展现出来,便于记忆和理解。无论是用于项目管理、学习笔记整理还是头脑风暴会议记录,思维导图都能够帮助人们更好地梳理思路,提高工作…

在 ClickHouse 中进行机器学习数据建模

本文字数:17443;估计阅读时间:44 分钟 作者:Dale McDiarmid 本文在公众号【ClickHouseInc】首发 本文将探索 MLOps 的世界,探讨如何在 ClickHouse 中对数据进行建模和转换,使其成为高效的特征存储&#xff…

百收网AI发帖子怎么发?

百收网AI发帖子怎么发? 百家号APP怎么发内容?没有电脑怎么在百度发内容?#百家号 查看视频讲解:(点击链接https://v.youku.com/v_show/id_XNjQyMjc4MjU3Ng.html:https://v.youku.com/v_show/id_XNjQyMjc4M…

Linux云计算 |【第三阶段】PROJECT1-DAY1

主要内容: 服务器硬件(RAID磁盘阵列、IDRAC远程控制卡)、部署LNMP动态网站(部署LNMP平台、上线Wordpress代码、创建数据库、初始化Wordpress) 一、服务器介绍 1、什么是服务器 服务器(Server&#xff09…

C++入门(part 3)

前言 在前文我们讲解了C的诞生与历史,顺便讲解一些C的小语法,本文会继续讲解C的基础语法知识。 1.inline(内联函数) inline是C新加入的关键字,用inline修饰的函数叫做内联函数,编译时C编译器会在调用的地方将函数展开,这样每次…

数据中台 | 数据资源管理平台介绍

01 产品概述 数据资源的盘查、集成、存储、组织、共享等全方位管理能力,无论对于企业的数字化转型,还是对企业数据资产的开发、运营、交易及入表,都具有极为关键的作用。今天,小兵就来为大家介绍我们自研数据智能平台中的核心产品…

废品回收小程序搭建,回收市场的机遇

随着经济的快速发展,居民生活水平普遍提高,产生的各类废品也在不断增加,为废品回收市场提供了发展基础。当下,在大众环保意识增加下,废品回收行业也将成为一个具有广阔发展前景的朝阳行业! 目前&#xff0…

C++vector类 (带你一篇文章搞定C++中的vector类)

感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步 数据结构习题_LaNzikinh篮子的博客-CSDN博客 初阶数据结构_LaNzikinh篮子的博客-CSDN博客 收入专栏:C_LaNzikinh篮子的博客-CSDN博客 其他专…

代码随想录27期|Python|Day54|​单调栈|​42. 接雨水|84. 柱状图中最大的矩形

42. 接雨水 根据常识可以归纳出,对于每一列所能够存住的水的高度 Height min(LeftMax, RightMax) - height 也就是,当前列的存水高度 左侧和右侧柱子的最大高度的较小值,减去当前列的柱子高度,所得到的差值。 可以验证第4列&…

spring常用注解(10)@Order

一、 1、作用 加Order()注解,在注解中加入数字,数字越小,优先级越高,最先执行。 2、使用方法 (1)自定义顺序 Component Order(1) public class XxxFilter extends OncePerRequestFilter{}Component Or…

什么品牌的宠物空气净化器性价比最高?352/希喂/霍尼韦尔/有哈/IAM实测对比

我开着一家猫咪咖啡馆,我们店貌美小猫可没少给我带来回头客~先给大家看看我的招财猫们 开了三年了,也是前不久店里才开始有点盈利,开始那段时间没少收到投诉,差点就干不下去了。店里养着的猫多,平时鱼油、冻干也没稍微…

foc入门

FOC(Field Oriented Control)磁场定向控制 foc,磁场定向控制,通过控制无刷电机三相电流,来实现对无刷电机的角度扭矩的控制。 首先先要理解无刷电机的原理,我们以三槽两极内转子电机进行讲解, 相较于有刷电机,无刷电…

乱弹篇(47)渔友絮语

中秋节连着国庆节长假很快就要来临,这对于久未远行旅游的人来说,真是拉满的幸福日子,因此本“人民体验官”特意推广人民日报官方微博文化产品《收藏!中秋假期博物馆看展攻略》。 截图:来源“人民体验官”推广平台 人民…

Linux编译内核选项说明

内核功能选择 编译内核时出现的提示信息是在描述内核配置界面中的导航和操作方式。具体解释如下&#xff1a; Arrow keys navigate the menu: 使用箭头键可以在菜单中上下左右移动。 <Enter> selects submenus ---> (or empty submenus ----): 按下回车键可以选择一个…

【白话树】之 树的基本知识、存储结构和二叉树转换

快速导航 一、树的基础概念1. 树的定义&#xff1a;2. 树的特点:3. 树的常用术语&#xff1a;4. 树的简单分类&#xff1a; 二、树的存储结构1.顺序存储1) 双亲表示法2) 孩子表示法3) 双亲孩子表示法 2.链式存储1) 孩子链表表示法2) 孩子兄弟表示法 三、树、森林和二叉树的转换…

根据NVeloDocx Word模板引擎生成Word(五)

前面几篇基本上介绍完了NVeloDocx的基础用法&#xff0c;绝大部分的需求其实都是这些基础的东西&#xff0c;本篇将介绍2个不常用但是实际的业务场景&#xff1a; 1、图片列表输出&#xff1b; 比如在E6开发平台生成的客户端中&#xff0c;图片列表往往是这样显示的&#xff…

【数据结构】第八节:链式二叉树

个人主页&#xff1a; NiKo 数据结构专栏&#xff1a; 数据结构与算法 源码获取&#xff1a;Gitee——数据结构 一、二叉树的链式结构 typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType data;struct BinaryTreeNode* left; // 左子树根节点struct BinaryT…

2024年沈阳都市圈电竞大赛 暨TGA腾讯电竞运动会辽宁省选拔赛盛大开赛

去年&#xff0c;由沈阳市体育局主办的“2023年沈阳都市圈首届电竞大赛暨TGA浑南之夏辽宁省英雄联盟选拔赛”成功举办。通过搭建赛事平台&#xff0c;营造了沈阳都市圈电竞氛围&#xff0c;促进了电子竞技全业态发展。 今年&#xff0c;“2024年沈阳都市圈电竞大赛暨TGA腾讯电…

Day24_0.1基础学习MATLAB学习小技巧总结(24)——图形对象属性值的设置和查询

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍&#xff0c;为了在这个过程中加深印象&#xff0c;也为了能够有所足迹&#xff0c;我会把自己的学习总结发在专栏中&#xff0c;以便学习交流。 参考书目&#xff1a;《MATLAB基础教程 (第三版) (薛山)》 之前的章节都是…

vue3项目实现全局国际化

本文主要梳理vue3项目实现全项目格式化&#xff0c;例如在我前面文章使用若依创建vue3的项目中&#xff0c;地址&#xff1a;若依搭建vue3项目在导航栏中切换&#xff0c;页面中所有的组件的默认语言随之切换&#xff0c;使用的组件库依旧是element-plus&#xff0c;搭配vue-i1…