机器精度

简介: Julia 的 eps 函数用于计算浮点数的机器精度,即两个相邻可表示浮点数之间的差值。例如,eps(Float32) 为 1.1920929f-7,eps(Float64) 为 2.220446049250313e-16。eps(x) 返回 x 和下一个浮点数之间的绝对差,间距随数值大小变化而变化,在接近零时最密。此外,nextfloat 和 prevfloat 函数分别返回给定值的下一个和上一个浮点数,展示了浮点数在二进制表示中的连续性。

机器精度

大多数实数都无法用浮点数准确地表示,因此有必要知道两个相邻可表示的浮点数间的距离,它通常被叫做机器精度。

Julia 提供了 eps 函数,它可以给出 1.0 与下一个 Julia 能表示的浮点数之间的差值:

实例
julia> eps(Float32)
1.1920929f-7

julia> eps(Float64)
2.220446049250313e-16

julia> eps() # 与 eps(Float64) 相同
2.220446049250313e-16
这些值分别是 Float32 中的 2.0^-23 和 Float64 中的 2.0^-52。eps 函数也可以接受一个浮点值作为参数,然后给出这个值与下一个可表示的浮点数值之间的绝对差。也就是说,eps(x) 产生一个和 x 类型相同的值,并且 x + eps(x) 恰好是比 x 更大的下一个可表示的浮点值:

实例
julia> eps(1.0)
2.220446049250313e-16

julia> eps(1000.)
1.1368683772161603e-13

julia> eps(1e-27)
1.793662034335766e-43

julia> eps(0.0)
5.0e-324
两个相邻可表示的浮点数之间的距离并不是常数,数值越小,间距越小,数值越大,间距越大。换句话说,可表示的浮点数在实数轴上的零点附近最稠密,并沿着远离零点的方向以指数型的速度变得越来越稀疏。根据定义,eps(1.0) 与 eps(Float64) 相等,因为 1.0 是个 64 位浮点值。

Julia 也提供了 nextfloat 和 prevfloat 两个函数分别返回基于参数的下一个更大或更小的可表示的浮点数:

实例
julia> x = 1.25f0
1.25f0

julia> nextfloat(x)
1.2500001f0

julia> prevfloat(x)
1.2499999f0

julia> bitstring(prevfloat(x))
"00111111100111111111111111111111"

julia> bitstring(x)
"00111111101000000000000000000000"

julia> bitstring(nextfloat(x))
"00111111101000000000000000000001"
这个例子体现了一般原则,即相邻可表示的浮点数也有着相邻的二进制整数表示。

相关文章
|
SQL 关系型数据库 MySQL
javaweb中实现分页,持续更新……
javaweb中实现分页,持续更新……
|
自然语言处理 监控 API
"阿里云ModelScope深度测评:从预训练模型到一键部署,揭秘高效模型开发背后的秘密,开发者必备利器!"
【10月更文挑战第23天】阿里云ModelScope是一款便捷的模型开发、训练、部署和应用平台。它提供丰富的预训练模型,涵盖自然语言处理、计算机视觉等领域,支持一键式模型训练和部署,具备模型版本管理和监控功能,显著降低开发门槛,提高模型应用效率。
630 0
|
JavaScript 数据可视化 BI
echarts的使用 超好用的报表制作、数据的图形化展示
您提供的链接是关于echarts使用的博客文章,它介绍了如何使用echarts进行数据的图形化展示,包括制作报表和图表。echarts是一个强大的数据可视化工具,能够创建折线图、柱状图、饼图等多种图表类型。文章还提供了一个Demo演示和项目结构的图片,以及官网链接供读者参考。
echarts的使用 超好用的报表制作、数据的图形化展示
|
存储 SQL 关系型数据库
面试官:你能聊聊 binlog、undo log、redo log 吗?
本文详细解析了MySQL数据库中的三种日志:binlog、undo log和redo log。binlog用于记录数据库的所有表结构变更及数据修改,支持归档、主从复制和数据恢复;undo log用于事务回滚,确保事务的原子性和实现多版本控制;redo log则用于crash-safe,确保数据库异常重启后已提交记录不丢失。文章通过实例和图表,深入浅出地介绍了每种日志的特点、应用场景及其实现机制。适合数据库开发者和运维人员阅读。
713 2
|
Java 数据库连接 数据库
如何在Spring Boot中集成Hibernate
如何在Spring Boot中集成Hibernate
|
机器学习/深度学习 人工智能 算法
AI重建粒子轨迹,发现新物理学
【5月更文挑战第6天】研究人员利用AI重建高能粒子碰撞实验中的粒子轨迹,发现新物理学现象。AI技术解决了传统方法的局限性,揭示了不同寻常的粒子衰变和分布模式,暗示可能存在未知物理过程或粒子相互作用。该研究显示AI在物理学研究中的潜力,但也面临数据需求、计算资源限制和模型可解释性的挑战。[论文链接](https://doi.org/10.7494/csci.2024.25.1.5690)
290 1
|
Prometheus Cloud Native 数据挖掘
搭建数据分析系统 Grafana 详细指南
搭建Grafana数据分析系统涉及安装Docker和拉取Grafana容器,然后配置Prometheus数据源,创建仪表盘和面板,以及设置告警规则。利用Grafana的可视化功能,可以将数据直观展示并进行监控。系统还支持导入导出仪表盘,便于协作和管理。
|
存储 数据可视化 数据库
基于SpringBoot+Vue的商业辅助决策系统的设计与实现(源码+部署说明+演示视频+源码介绍)(2)
基于SpringBoot+Vue的商业辅助决策系统的设计与实现(源码+部署说明+演示视频+源码介绍)
185 1
|
存储 缓存 Java
【scoop】安装及基本使用
【scoop】安装及基本使用
1474 0
|
小程序 前端开发
uniapp+node.js(express框架)获取微信小程序的openid
uniapp+node.js(express框架)获取微信小程序的openid
436 0