浮点数的世界 0.1 + 0.2 = 0.30000000000000004?

简介: 今天看到一个有趣的新闻,浮点数计算导致的灾难,借此机会再理解一下浮点数的原理。

背景

今天看到一个有趣的新闻,浮点数计算导致的灾难,借此机会再理解一下浮点数的原理。

0.1 + 0.2 的浮点数计算结果

看到这个结果表示震惊。

439084f8f99d42db82fefe85b2e2d135.png

a7fa5fed8f4047f3ad758f4ea980a318.png

原因

在小数点后 4 位时,连续的二进制数,对应的十进制数却是不连续的,因此只能增加位数来尽可能近似的表示。

原理

0.1 和 0.2 是如何表示的?

根据前面的讲解,十进制 0.1 转为二进制小数,得到的是 0.0001100… (重复1100)这样一个循环二进制小数,使用 IEEE754 表示如下图:

4f3fe43897cb4eb09e0912e3e29b6f49.png

010c8b90212942c2b9c7b562223b055e.png

同样的方法,0.2 用单精度浮点数表示是:0.20000000298023223876953125。所以,0.1 + 0.2 的结果是:0.300000004470348358154296875。

有趣的0.30000000000000004

竟然有这个域名

参考

  1. 浮点数
目录
相关文章
|
JavaScript 前端开发 Python
【python自动化】Playwright基础教程(三)定位操作
【python自动化】Playwright基础教程(三)定位操作
454 0
|
Java
Mac 下安装jdk1.7(国内镜像)
Mac 下安装jdk1.7(国内镜像)
2863 0
|
人工智能 并行计算 安全
从零到一,打造专属AI王国!大模型私有化部署全攻略,手把手教你搭建、优化与安全设置
【10月更文挑战第24天】本文详细介绍从零开始的大模型私有化部署流程,涵盖需求分析、环境搭建、模型准备、模型部署、性能优化和安全设置六个关键步骤,并提供相应的示例代码,确保企业能够高效、安全地将大型AI模型部署在本地或私有云上。
3768 7
|
2月前
|
Linux 虚拟化 iOS开发
VMware Workstation & Fusion 25H2:采用日历版本命名与全新功能
VMware Workstation & Fusion 25H2:采用日历版本命名与全新功能
831 5
VMware Workstation & Fusion 25H2:采用日历版本命名与全新功能
|
4月前
|
云安全 人工智能 自然语言处理
|
5月前
|
弹性计算 关系型数据库 数据库
阿里云服务器ECS是什么?ECS应用场景、租用流程及使用教程整理
阿里云ECS(弹性计算服务)是性能稳定、弹性扩展的云计算服务,支持多种处理器架构和实例类型,适用于网站托管、开发测试、数据存储、企业服务、游戏多媒体及微服务架构等场景。提供从注册、配置到部署、运维的完整使用流程,助力用户高效上云。
|
4月前
|
Kubernetes 安全 Devops
「迁移急救包」全云平台无缝迁移云效实操手册
阿里云云效是国内领先的一站式DevOps平台,提供代码全生命周期管理、智能化交付流水线及精细化研发管控,支持多种开发场景。本文详细介绍了从其他平台(如Coding)向云效迁移的完整方案,包括代码仓库、流水线、制品仓库及项目数据的迁移步骤,帮助用户实现高效、安全的平滑迁移,提升研发效率与协作能力。
585 29

热门文章

最新文章