当前位置:网站首页>关于二进制无法精确表示小数
关于二进制无法精确表示小数
2022-07-07 03:23:00 【水晶心泉】
在之前做过的一个项目中遇到了小数计算不精确的问题,如下图所示
我重现了一下,大致是1.05+1+1.05// 3.0999999999999996
这种的,于是看了下二进制是如何表示小数的。
简单点讲的话,就是可以类比十进制的浮点数来理解二进制的浮点数
十进制 | 1 | 2 | 3 | . | 5 | 8 | 9 |
理解方式 | 1*102 | 2*101 | 3*100 | . | 5*(1/101) | 8*(1/102) | 9*(1/10%3) |
二进制 | 1 | 1 | 1 | . | 1 | 0 | 1 |
理解方式 | 1*22 | 1*21 | 1*20 | . | 1*(1/21) | 1*(1/22) | 1*(1/23) |
因此二进制只能精确表示0.5(1/2)
、0.25(1/4)
、0.125(1/8)
、0.0625(1/16)
、…这种的小数,当然了像1.0
、2.0
、3.0
这种的小数部分全为0
的也是可以精确表示的,其他的小数均无法精确表示,所以运算结果也就可能会出现长尾,之所以有一部分不会出现长尾,参考了其他资料后可以发现是语言本身做了部分优化,过分接近的数字会被语言直接优化成看似精确的值。
十进制小数 | 二进制 |
---|---|
0.1 | 0.0001100110011001100110011001100110011001100110011001101 |
0.2 | 0.001100110011001100110011001100110011001100110011001101 |
0.3 | 0.010011001100110011001100110011001100110011001100110011 |
0.4 | 0.01100110011001100110011001100110011001100110011001101 |
0.5 | 0.1 |
0.6 | 0.10011001100110011001100110011001100110011001100110011 |
0.7 | 0.1011001100110011001100110011001100110011001100110011 |
0.8 | 0.1100110011001100110011001100110011001100110011001101 |
0.9 | 0.11100110011001100110011001100110011001100110011001101 |
0.10 | 0.0001100110011001100110011001100110011001100110011001101 |
0.11 | 0.00011100001010001111010111000010100011110101110000101001 |
0.12 | 0.00011110101110000101000111101011100001010001111010111 |
0.13 | 0.00100001010001111010111000010100011110101110000101001 |
0.14 | 0.00100011110101110000101000111101011100001010001111011 |
0.15 | 0.0010011001100110011001100110011001100110011001100110011 |
0.16 | 0.0010100011110101110000101000111101011100001010001111011 |
0.17 | 0.0010101110000101000111101011100001010001111010111000011 |
0.18 | 0.001011100001010001111010111000010100011110101110000101 |
0.19 | 0.001100001010001111010111000010100011110101110000101001 |
0.20 | 0.001100110011001100110011001100110011001100110011001101 |
0.21 | 0.0011010111000010100011110101110000101000111101011100001 |
0.22 | 0.0011100001010001111010111000010100011110101110000101001 |
0.23 | 0.0011101011100001010001111010111000010100011110101110001 |
0.24 | 0.0011110101110000101000111101011100001010001111010111 |
0.25 | 0.01 |
0.26 | 0.0100001010001111010111000010100011110101110000101001 |
0.27 | 0.010001010001111010111000010100011110101110000101001 |
0.28 | 0.0100011110101110000101000111101011100001010001111011 |
0.29 | 0.010010100011110101110000101000111101011100001010001111 |
0.30 | 0.010011001100110011001100110011001100110011001100110011 |
0.31 | 0.010011110101110000101000111101011100001010001111010111 |
0.32 | 0.010100011110101110000101000111101011100001010001111011 |
0.33 | 0.010101000111101011100001010001111010111000010100011111 |
0.34 | 0.010101110000101000111101011100001010001111010111000011 |
0.35 | 0.01011001100110011001100110011001100110011001100110011 |
0.36 | 0.01011100001010001111010111000010100011110101110000101 |
0.37 | 0.01011110101110000101000111101011100001010001111010111 |
0.38 | 0.01100001010001111010111000010100011110101110000101001 |
0.39 | 0.01100011110101110000101000111101011100001010001111011 |
0.40 | 0.01100110011001100110011001100110011001100110011001101 |
0.41 | 0.011010001111010111000010100011110101110000101000111101 |
0.42 | 0.011010111000010100011110101110000101000111101011100001 |
0.43 | 0.011011100001010001111010111000010100011110101110000101 |
0.44 | 0.011100001010001111010111000010100011110101110000101001 |
0.45 | 0.011100110011001100110011001100110011001100110011001101 |
0.46 | 0.011101011100001010001111010111000010100011110101110001 |
0.47 | 0.0111100001010001111010111000010100011110101110000101 |
0.48 | 0.011110101110000101000111101011100001010001111010111 |
0.49 | 0.0111110101110000101000111101011100001010001111010111 |
0.50 | 0.1 |
0.51 | 0.1000001010001111010111000010100011110101110000101001 |
0.52 | 0.100001010001111010111000010100011110101110000101001 |
0.53 | 0.1000011110101110000101000111101011100001010001111011 |
0.54 | 0.10001010001111010111000010100011110101110000101001 |
0.55 | 0.1000110011001100110011001100110011001100110011001101 |
0.56 | 0.100011110101110000101000111101011100001010001111011 |
0.57 | 0.10010001111010111000010100011110101110000101000111101 |
0.58 | 0.10010100011110101110000101000111101011100001010001111 |
0.59 | 0.10010111000010100011110101110000101000111101011100001 |
0.60 | 0.10011001100110011001100110011001100110011001100110011 |
0.61 | 0.10011100001010001111010111000010100011110101110000101 |
0.62 | 0.10011110101110000101000111101011100001010001111010111 |
0.63 | 0.10100001010001111010111000010100011110101110000101001 |
0.64 | 0.10100011110101110000101000111101011100001010001111011 |
0.65 | 0.10100110011001100110011001100110011001100110011001101 |
0.66 | 0.10101000111101011100001010001111010111000010100011111 |
0.67 | 0.10101011100001010001111010111000010100011110101110001 |
0.68 | 0.10101110000101000111101011100001010001111010111000011 |
0.69 | 0.101100001010001111010111000010100011110101110000101 |
0.70 | 0.1011001100110011001100110011001100110011001100110011 |
0.71 | 0.10110101110000101000111101011100001010001111010111 |
0.72 | 0.1011100001010001111010111000010100011110101110000101 |
0.73 | 0.101110101110000101000111101011100001010001111010111 |
0.74 | 0.1011110101110000101000111101011100001010001111010111 |
0.75 | 0.11 |
0.76 | 0.1100001010001111010111000010100011110101110000101001 |
0.77 | 0.110001010001111010111000010100011110101110000101001 |
0.78 | 0.1100011110101110000101000111101011100001010001111011 |
0.79 | 0.11001010001111010111000010100011110101110000101001 |
0.80 | 0.1100110011001100110011001100110011001100110011001101 |
0.81 | 0.110011110101110000101000111101011100001010001111011 |
0.82 | 0.11010001111010111000010100011110101110000101000111101 |
0.83 | 0.11010100011110101110000101000111101011100001010001111 |
0.84 | 0.11010111000010100011110101110000101000111101011100001 |
0.85 | 0.11011001100110011001100110011001100110011001100110011 |
0.86 | 0.11011100001010001111010111000010100011110101110000101 |
0.87 | 0.11011110101110000101000111101011100001010001111010111 |
0.88 | 0.11100001010001111010111000010100011110101110000101001 |
0.89 | 0.11100011110101110000101000111101011100001010001111011 |
0.90 | 0.11100110011001100110011001100110011001100110011001101 |
0.91 | 0.11101000111101011100001010001111010111000010100011111 |
0.92 | 0.11101011100001010001111010111000010100011110101110001 |
0.93 | 0.11101110000101000111101011100001010001111010111000011 |
0.94 | 0.111100001010001111010111000010100011110101110000101 |
0.95 | 0.1111001100110011001100110011001100110011001100110011 |
0.96 | 0.11110101110000101000111101011100001010001111010111 |
0.97 | 0.1111100001010001111010111000010100011110101110000101 |
0.98 | 0.111110101110000101000111101011100001010001111010111 |
0.99 | 0.1111110101110000101000111101011100001010001111010111 |
边栏推荐
- Networkx drawing and common library function coordinate drawing
- 【NOI模拟赛】区域划分(结论,构造)
- 【JDBC以及内部类的讲解】
- Please tell me how to monitor multiple schemas and tables by listening to PgSQL
- MOS tube parameters μ A method of Cox
- Graduation design game mall
- leetcode 509. Fibonacci number
- 分布式id解决方案
- Master-slave replication principle of MySQL
- MySQL的主从复制原理
猜你喜欢
MATLAB小技巧(29)多项式拟合 plotfit
异步组件和Suspense(真实开发中)
Tujia, muniao, meituan... Home stay summer war will start
2018 Jiangsu Vocational College skills competition vocational group "information security management and evaluation" competition assignment
服装门店如何盈利?
Data of all class a scenic spots in China in 2022 (13604)
Bus消息总线
Take you to brush (niuke.com) C language hundred questions (the first day)
How can brand e-commerce grow against the trend? See the future here!
How DHCP router works
随机推荐
Initial experience of addresssanitizer Technology
How can gyms improve their competitiveness?
OOM(内存溢出)造成原因及解决方案
2018年江苏省职业院校技能大赛高职组“信息安全管理与评估”赛项任务书
Please tell me how to monitor multiple schemas and tables by listening to PgSQL
Exception of DB2 getting table information: caused by: com ibm. db2.jcc. am. SqlException: [jcc][t4][1065][12306][4.25.13]
MySQL的主从复制原理
Composition API 前提
How can flinksql calculate the difference between a field before and after update when docking with CDC?
MySQL user permissions
Paranoid unqualified company
Master-slave replication principle of MySQL
多个kubernetes集群如何实现共享同一个存储
RuntimeError: CUDA error: CUBLAS_ STATUS_ ALLOC_ Failed when calling `cublascreate (handle) `problem solving
main函数在import语句中的特殊行为
算法---比特位计数(Kotlin)
Basic process of network transmission using tcp/ip four layer model
数据资产管理与数据安全国内外最新趋势
请问 flinksql对接cdc时 如何实现计算某个字段update前后的差异 ?
关于数据库数据转移的问题,求各位解答下