C语言浮点数的各种表示方法
2023-03-20 14:54:11 时间
2022.8.7更新
学习js的过程中发现了0.1+0.2更深一层的运算过程,感兴趣的可以看看这个博主写的帖子。
前提:
由于存在精度限制,浮点数只是⼀个近似值,它的计算是不精确的,⽐如
C
语⾔⾥⾯
0.1 + 0.2
并
不等于
0.3
,⽽是有⼀个很⼩的误差。
if
(
0.1
+
0.2
==
0.3
)
// false
PS:正确的判断两数是否相等的条件是看两数的
绝对值之差是否小于1e-5
C
语⾔允许使⽤科学计数法表示浮点数,使⽤字⺟
e
来分隔⼩数部分和指数部分。
上⾯示例中,
e
后⾯如果是加号
+
,加号可以省略。注意,科学计数法⾥⾯
e
的前后,不能存在空格。
double
x
=
123.456e+3
;
// 123.456 x 10^3
//
等同于
double
x
=
123.456e3
;
另外,科学计数法的⼩数部分如果是
0.x
或
x.0
的形式,那么
0
可以省略。
0.3E6
//
等同于
.
3E6
3.0E6
//
等同于
3.E6
总结 合法浮点数的三种形式:
1. 十进制小数形式。由数字和小数点组成,必须有小数点。例如(123.)(123.0)(.123)。
2. 指数形式。如123e3。字母e(或E)之前必须有数字,e后面的指数必须为整数。
3. 规范化的指数形式里面,小数点前面有且只有一位非零的数字。如1.2345e8
相关文章
- FastThreadLocal 是什么鬼?吊打 ThreadLocal 的存在!!
- 10月份Github上热门的开源项目
- 嵌入式算法之CRC校验算法
- 前端vscode必装的效率插件,你知道吗?
- Github上12个Star过万的Vue.js项目
- 标星 1.3 k 的一个开源书籍,带你玩转 Go
- GitHub全面封杀YouTube-dl!这个7.2万Star热门开源项目,真的没救了?
- 设计模式系列—状态模式
- 辗转多个公司,我从与数据打交道的工作中学到了什么?
- IT工程师都需要掌握的容器技术之Dockerfile
- 设计模式系列—命令模式
- 一文理解 Linux 平均负载,附排查工具
- 简单代码的秘诀—去掉显而易见的,加上有意义的
- 2年了,那些运行了Github上灭霸脚本的人后来都怎么样了?
- 超级干货:什么是低代码?
- 师父给了我一个 .proto 文件,我应该怎么使用?
- 嵌入式算法之空间向量夹角公式及其应用
- 阿里架构师教你JUC-Future与FutureTask原理详解
- 编程语言的被淘汰:选错语言毁终身
- GitHub Star 3.2K Java 图片缩略图生成库