为什么不能够用unsigned 修饰 float和double
最近犯了一个错误:
定义变量类型的时候竟然定义了unsigned double的类型。由于编译能够通过,因此一直没有发现这样写会有什么样的问题。
今天一次偶然的测试中发现这些变量的值都是整数。一开始觉得奇怪,明明是浮点数,怎么变成整型了?
后来上网查了一下资料:
原来浮点数是不能用 unsigned来规范的。unsigned 的意思就是把内存中的数据第一位也用来表示数据,而不用于表示符号位。而浮点数规定内存中数据的第一位必须是符号位。因此两者之间是互相矛盾的,这也就是为什么浮点数不会有unsigned类型。
可是这样的写法也不至于在VC编译时报错,只会给出一个wraning。
在某些编译器下unsigned float 和 unsigned double会被自动转换成unsigned int 类型,而不报错。这时sizeof(unsigned float)和sizeof(unsigned double)的值是4。
切记:不能定义unsigned float和unsigned double类型。
因为整型是一串二进制来存内容
比如00000000,其中第一位是符号位用来表示正负,但是你设置无符号就可以让后面的往这里进位,打到增加数据的目地。
可是浮点数是按照 整数部分,小数部分,指数部分存放的。运算也是分开来运算的。
没法做这样的进位。
unsigned只能修饰整型,即char short int long
数据类型定义的时候float,double就是带符号的了,浮点数第一位就是符号位
为什么不能够用unsigned 修饰 float和double相关推荐
- mysql中的double类型_MySQL中float、double、decimal三个浮点类型的区别与总结!
作者:极客小俊 一个专注于web技术的80后 我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人! CSDN@极客小俊,原创文章, B站技术分享 个人博客: cnblogs.com 前端h ...
- C语言:十六进制(HEX)和浮点类型(float、double)转换
目录 1.浮点类型转换为十六进制 方法1:用地址用指针 方法2:用共用体 方法3: 使用memcpy 2.十六进制转换为浮点类型 近日在研究Modbus协议的时候遇到这样一个情况:使用ModScan3 ...
- linux中double大小,linux 下 float 和 double 精度计算差别
今天在根据需求写代码时候,偶尔发现linux 下 设置变量类型 float 和double 计算时, 得到的结果是不一样的. 要求: 设定值 = 传入值 * 10 * 122.88 /1000; ca ...
- FLOAT或DOUBLE列与具有数值类型的数值进行比较 问题
来源: 首先声明:Mysql手册上已经说明,FLOAT或DOUBLE列与具有数值类型的数值进行比较,不能使用等式(=)比较. 但实际还有这种需要. 今天就来研究一下float,double 字段在wh ...
- 浮点数在计算机中存储方式float,double)---转
C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit,我们在声明一个变量float f= ...
- float和double的精度
1 范围 float和double的范围是由指数的位数来决定的. float的指数位有8位,而double的指数位有11位,分布如下: float: 1bit(符号位) 8bits(指数位) 23bi ...
- 【转】float与double的范围和精度
原文:http://blog.csdn.net/wuna66320/article/details/1691734 1 范围 float和double的范围是由指数的位数来决定的. float的指数位 ...
- (转载)float与double中的精度问题
float与double的范围和精度 原文:http://blog.csdn.net/wuna66320/article/details/1691734 1 范围 float和double的范围是由指 ...
- float和double的精度和取值范围计算方法
C/C++各数据类型大小和取值范围 类型名称 字节数 取值范围 signed char 1 -2^7(-128) ~ 2^7-1(127) unsigned char 1 0 ~ 2^8-1(255) ...
最新文章
- startActivityForResult 请求码不正确
- html div阴影向上,css3阴影向上缓动样式
- 使用IntelliJ IDEA11创建Java Web程序
- springboot 多个sevice类实现同一接口的调用
- Spring MVC源码——Servlet WebApplicationContext
- 网络电话---异常处理01
- vuejs项目性能优化 - 总结篇
- OpenCV3学习(2.1)——图像Mat数据的访问-at/ptr/iterator
- web前端新手入门教程:Web 框架的架构模式探讨
- 如何连接一个Linux服务器
- 磁盘管理高级进阶-LVM逻辑卷管理
- GBASE数据库迁移(Oracle到GBase 8s的数据类型映射)
- excel宏-自定义筛选查询
- SEO网络营销培训机构都是如何给新手SEO培训的,新手SEO看完就知道套路,以后就不会上当受骗
- 手把手教你ZPanelX 10.0.0在window下的汉化
- 聊聊高效的与第三方合作方沟通的一些技巧
- 【办公Tips】 如何快速将一列Excel值变成一段用符号间隔的文字
- web前端面试宝典——带你直击面试重难点(40个经典题目,涵盖近90%的考点,码字2w,干货满满!)
- Flutter自定义Decoration实现特殊的背景框
- 前端生成二维码,升级
热门文章
- 相互靠近的色环电感之间的互感
- 2021春季学期-创新设计与实践-Lesson3
- FIE2020-2020年的论文相关记录
- S-D5舵机拆开看一看
- DRV8825步进电机驱动控制模块以及双轴平台
- 9. 设计二个函数分别计算sinx和cosx_工程人常用的12个excel和9个wps技巧
- mysql vip_MySQL高可用集群的VIP切换
- mate40能更新鸿蒙,Mate40领衔更新!鸿蒙系统首批升级机型名单:这些机型可坐等推送...
- 网络系统结构和设计的基本规则(Basic rules for network system architecture and design)
- matlab GUI gca gco gcf