C#中float的取值范围和精度
C#中float的取值范围和精度
C#中float的取值范围和精度float类型的表现形式:
默认情况下,赋值运算符右侧的实数被视为 double。 因此,应使用后缀 f 或 F 初始化浮点型变量,如以下示例中所示:
如果在以上声明中不使用后缀,则会因为您尝试将一个 double值存储到 float 变量中而发生编译错误。
float的取值范围
float占用4个字节,和int是一样,也就是32bit.
1bit(符号位) 8bits(指数位) 23bits(尾数位)
存储方式如下图:
取值范围基本表达法
(浮点)数值 = 尾数 × 底数 ^ 指数,(附加正负号)----------------
于是,float的指数范围为-127~128,而double的指数范围为-1023~1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
其他特殊表示
1.当指数部分和小数部分全为0时,表示0值,有+0和-0之分(符号位决定),0x00000000表示正0,0x80000000表示负0.
2.指数部分全1,小数部分全0时,表示无穷大,有正无穷和负无穷,0x7f800000表示正无穷,0xff800000表示负无穷.
3.指数部分全1,小数部分不全0时,表示NaN,分为QNaN和SNaN,Java中都是NaN.
结论:
可以看出浮点数的取值范围是:2^(-149)~~(2-2^(-23))*2^127,也就是Float.MIN_VALUE和Float.MAX_VALUE.
精度
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
- C#中is 运算符与as运算符的区别和作用
- C#获取上个月第一天和最后一天
- C#中this的作用
- C# Directory类的操作
- C# volatile与lock
- C#匿名类
- C#中Dictionary的用法
- C#中app.config配置文件
- C#冒泡排序
- C#中的属性、和字段的区别
- c#中SqlBulkCopy的使用
- C#正则表达式Regex类的用法
- c# Invoke和BeginInvoke 区别
- c#中使用stopwatch统计代码执行时间
- c# 协变和逆变
- C#中SortedList的用法
- 2020年大众7.5代高尔夫R终结特别版 最后的呐喊(2020年大众7.5代高尔夫R终结特别版)
- 七年前的这部剧有毒,全剧只有女主红到发紫,男主至今无人认识(七年前的这部剧有毒)
- 宋轶除了演过于曼丽,原来还演过一个青楼女子(宋轶除了演过于曼丽)
- 赵丽颖第一部当女主的戏,主角配角个个都是实力演员(赵丽颖第一部当女主的戏)
- 乾隆为何这么喜爱白塔原因是什么(乾隆为何这么喜爱白塔原因是什么)
- 逐渐消失的东北八大怪现象,进步的社会里我们遗失的是什么(逐渐消失的东北八大怪现象)
热门推荐
- 宝塔面板安装ssl证书网站打不开(宝塔面板如何配置SSL证书?)
- laravel后台登录教程(Laravel 默认邮箱登录改成用户名登录的实现方法)
- nginx配置root后的路径打不开(详解nginx.conf 中 root 目录设置问题)
- tcp三次握手建立连接的过程(TCP第三次握手传数据过程图解)
- vue 选中背景高亮(vue 如何设置背景颜色及透明度)
- phpstudy报错(phpStudy运行帝国备份王出错解决方法)
- vs中debug和release的区别
- 常见NoSQL数据库
- php创建多个文件(PHP实现单文件、多个单文件、多文件上传函数的封装示例)
- 腾讯云如何添加安全通信端口(腾讯云服务器如何添加安全通信端口?)