红宝石浮点精度

2023-11-22

据我了解,Ruby (1.9.2) 浮点数的精度为 15 位十进制数字。因此,我期望舍入浮动x精确到小数点后 15 位等于x。对于此计算,情况并非如此。

x = (0.33 * 10)
x == x.round(15) # => false

顺便说一下,四舍五入到 16 位会返回 true。

你能向我解释一下吗?


Part of the problem is that 0.33 does not have an exact representation in the underlying format, because it cannot be expressed by a series of 1 / 2n terms. So, when it is multiplied by 10 a number slightly different than 0.33 is being multiplied.

对于这个问题,3.3也没有准确的表示。

Part One

当数字没有精确的以 10 为基数的表示形式时,在转换尾数中包含信息的最低有效数字时,将会产生余数。这个余数将向右传播,可能永远传播,但这基本上没有意义。这个错误的明显随机性是由于同样的原因解释了明显不一致的舍入和Matchu注意到了。那是第二部分。

Part Two

并且此信息(最右边的位)与单个十进制数字所传达的信息并不完全对齐,因此十进制数字通常会比原始精度更高时其值要小一些。

这就是为什么转换可能在 15 位数字处舍入为 1,在 16 位数字处舍入为 0.x:因为较长的转换对于尾数末尾右侧的位没有值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

红宝石浮点精度 的相关文章

随机推荐

  • 软件开发方法论[关闭]

    Closed 这个问题是无关 目前不接受答案 我想知道软件开发过程和软件开发方法之间的区别 如果有的话 流程只是方法论的一个组成部分 方法论有 A process方面 要开展哪些工作 A product方面 要使用和 或创建什么东西 A p
  • c# 检测ClientWebSocket何时断开(关闭)

    经过长时间的搜索 我来找你帮助我 我有一个 WPF 应用程序 使用 ClientWebSocket 类 使用 System Net WebSockets 连接到 WebSocket 服务器 NodeJS 我的应用程序正在运行后台 Windo
  • 如何在Python中的SQL语句中使用变量?

    我有以下Python代码 cursor execute INSERT INTO table VALUES var1 var2 var3 where var1是一个整数 var2 and var3是字符串 如何在不使用 Python 将变量名
  • 断言(假)与运行时异常?

    我正在阅读来源XWalkUIClient内部我遇到了以下代码 switch type case JAVASCRIPT ALERT return onJsAlert view url message result case JAVASCRIP
  • 编译并运行ApiDemos

    我正在尝试编译Android SDK附带的Google ApiDemos 但我就是无法让它运行 这已经让我抓狂了 当我在 Eclipse 中基于示例 目标 1 5 或 1 6 创建一个新项目并尝试编译和运行时 我收到了近一千个错误 这不是我
  • WebSecurity.InitializeDatabaseConnection - 如何指定数据库架构?

    我正在使用 SimpleMembership http blog osbornm com archive 2010 07 21 using simplemembership with asp net webpages aspx 但我无法将自
  • Windows 上的 os.stat()

    属于哪些领域os stat Windows 上填充了虚拟值 python 文档对此并不清楚 特别是 什么是st inoWindows 上的产量 有人可以在 Windows 上运行交互式 python 会话并让我知道吗 我没有 Windows
  • 自动存储时长的具体要求是什么?

    根据编译器的不同 以下代码 int main srand 0 if rand char buffer 600 1024 printf buffer else char buffer 500 1024 printf buffer return
  • 对于内联函数来说,什么是好的启发式方法?

    考虑到您只是尝试优化速度 那么决定是否内联函数的良好启发式是什么 显然代码大小应该很重要 但是当 例如 gcc 或 icc 确定是否内联函数调用时通常会使用其他因素吗 该领域有任何重要的学术工作吗 维基百科有a few关于此的段落 底部有一
  • 以编程方式激活飞行模式?

    有谁知道如何在 iPhone OS 2 1 上以编程方式取消 激活飞行模式 使用公共 API 无法执行此操作 这意味着 Apple 不会批准 App Store 上执行此操作的应用程序 当然 无论如何您通常都不应该这样做 我很想听听你想到的
  • 从 android 中的图库获取图像时 android 中出现 java.lang.OutOfMemoryError

    我正在使用代码从图库中挑选一张图片 public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView R layo
  • EF4 Code First - 如何正确映射跨多个表拆分实体

    我正在使用 EF4 CTP5 尝试保留一个 POCO 对象 该对象分为两个表 链接是 ContactID 当我保存联系人时 我希望将核心联系人信息保存在一个表 联系人 中 并将拥有该联系人的用户的链接保存在另一个表 UserToContac
  • MongoException:不允许使用零长度键,您是否使用带双引号的 $ ?

    我正在使用 symfony2 和 mongodb 直到今天 一切正常 但是我创建一个新文档 突然出现此错误 MongoException 不允许使用零长度键 您是否使用带双引号的 dm this gt get doctrine odm mo
  • GitLab 统计问题总数

    我想使用 api 统计我的 gitlab 项目上的所有问题 下面是我正在使用的命令 curl header PRIVATE TOKEN xxxxxxx https gitlab myapp com api v4 groups xx issu
  • 在 Typescript 项目中导入 Matter-js

    我找到了这个文件 https www npmjs com package types matter js 我执行这一行 npm install save types matter js 在根 ts 文件中我收到错误消息 Matter 指的是
  • 如何在 Jasper Report 中组织框架,使它们完美浮动?

    在 Jasper 报告中 我有 4 个框架 下图 它们设置了一些属性 如同一个图像中所示 现在 想法是给定某些参数showBlue and showRed框架BLUE and RED分别显示或隐藏 后续帧 浮动 在前一帧之后 考虑以下顺序
  • unordered_set 非常量迭代器

    出于测试目的 我创建了一些 unordered set 并尝试迭代该集合 该集合拥有自己的类 class Student private int matrNr string name public Student const int mat
  • 使用 React、Redux 和 Axios 处理异步请求?

    我是 React JS 和 Redux 的新手 这让我难以上手 我正在尝试使用 Axios 发出 POST 请求 但无法发出请求 可能是我在容器文件中丢失了一些东西 下面是代码 查看plnkr Update 提交后我收到 redux for
  • 将列表与公共元素合并

    我有一个清单 1 1 7 2 1 10 11 12 211 446 469 3 1 10 11 12 13 4 1 11 12 13 215 5 1 15 16 6 1 15 17 216 225 我想合并具有公共元素的列表切片 并索引已合
  • 红宝石浮点精度

    据我了解 Ruby 1 9 2 浮点数的精度为 15 位十进制数字 因此 我期望舍入浮动x精确到小数点后 15 位等于x 对于此计算 情况并非如此 x 0 33 10 x x round 15 gt false 顺便说一下 四舍五入到 16