float 和 double 精度相关的概念

2024-04-24

为什么精度float小数点后最多 6 位,精度double小数点后最多15位?

任何人都可以给一个数学解释 of it?


说一下精度float or double是一些小数位数是草率的术语。float and double通常使用 IEEE-754 二进制 32 和二进制 64 格式实现,它们分别使用 24 位和 53 位的有效数。 (有效数是浮点表示形式的小数部分。它伴随着符号位和指数。)这些格式的精度为 24 位和 53 位。

精度足够,对于float,任何具有六位有效数字的十进制数字都可以转换为float足够准确,转换回六位十进制数字会产生相同的数字。 (本文讨论的所有转换都使用舍入到最接近的值。)六是限制;有一些七位十进制数字无法在往返转换后继续存在。为了double,限制为 15 位有效数字。

Here is how we find the limits. A 24-bit significand can represent 224 values. That is 16,777,216, so it is certainly capable of representing all seven-digit decimal numerals from 0 to 9,999,999. However, if we want to represent some seven-digit decimal numeral a.bcdefg•10n, the last decimal numeral in this interval, 9.999999•10n, has some float representation f•2e. Because the powers of 10 are irregular relative to the powers of two, that f might be small, meaning that we are not representing the numbers from 0.000000•10n to 9.999999•10n with significands entirely in a single sequence 0 to 16,777,215. (I am glossing over some details here; numbers which would have significands under 222 are rescaled to another exponent in the normal range. But being in a finer exponent range gives more precision, so that is not an issue.) Rather, there was a rollover at some point, and the exponent increased. So we lose one bit of precision. So the number of decimal digits we can guarantee survive a round-trip conversion to a floating-point format with p digits in base b is floor((p−1)•log10b). (That formula is given in C 2018 5.2.4.2.2 12.)

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

float 和 double 精度相关的概念 的相关文章

  • 为什么 ASP.NET DropDownList 控件需要单击两次才能在 Internet Explorer 中展开

    我有一个 ASP NET DropDownList 控件 它呈现到页面上的下拉列表 选择 HTML 标记 中 由于某种原因 当我使用 Internet Explorer 时 需要单击两次才能打开它并查看选项 这对最终用户来说只是额外的单击
  • Numpy排列浮点不一致

    我有一个相当简单的 numpy 任务 创建一个长数组 每个元素递增 0 001 当然 np arange就是答案 我将自己限制为默认精度 float64 对结果的一个简单检查是数组的每 1000 个元素应该具有相同的小数部分 我通过绘图检查
  • 将浮点数向下舍入到最接近的整数?

    我想获取一个浮点数并将其向下舍入到最接近的整数 然而 如果它不是一个整体 我always想要向下舍入变量 无论它与下一个整数的接近程度如何 有没有办法做到这一点 int x 转换为整数将截断 朝向 0 0 例如math trunc 对于非负
  • C 中浮点数的比较

    我有一个double打印为0 000000我试图将其与0 0f 不成功 为什么这里有区别呢 确定双精度数是否为零的最可靠方法是什么 确定它是否足够接近零以将其打印为0 000000精确到小数点后六位 例如 fabs d lt 0 00000
  • 浮点计算根据编译器的不同而变化

    当我运行在 Windows 和 Solaris 上编译的完全相同的代码执行完全相同的浮点计算 使用双精度 时 我得到的结果略有不同 我知道由于舍入误差 结果并不准确 然而 我本以为舍入误差是与平台无关的 从而在两个平台上给出相同的 稍微不正
  • 处理 Javascript 中的浮点精度[重复]

    这个问题在这里已经有答案了 我有大量数值y在 JavaScript 中 我想通过将它们四舍五入到最接近的倍数来对它们进行分组x并将结果转换为字符串 如何解决烦人的浮点精度 例如 0 2 0 4 0 6000000000000001 我尝试过
  • 对浮点数求反总是安全的吗

    考虑 double f foo double g f where foo 可以返回分配给的任何内容f is double g f 在 C 和 C 中安全吗 对于 IEEE 754 类型 显然是这样 但 C 和 C 并不限制浮点实现 与 Ja
  • 当计算结果在 Linux 中产生非正规数时刷新为零

    我的 C 代码中的计算正在产生逐渐下溢 当发生这种情况时 程序将以 SIGFPE 终止 当计算产生逐渐下溢 非正常 时 如何将结果刷新为零 而不终止执行 我正在一台 redhat linux 机器上工作 谢谢 您还没有指定架构 我猜测它是一
  • Java 双epsilon

    我目前需要一个epsilon http en wikipedia org wiki Machine epsilon类型的double 首选 java 库中的常量 而不是自己的实现 定义 据我所知Double has MIN VALUE an
  • JavaScript 中的整数

    MDN https developer mozilla org en JavaScript A re introduction to JavaScript Numbers states JavaScript 中的数字是 双精度 64 位格式
  • 截断浮点数而不向上舍入

    我有一个浮点数 我想将其截断为 3 位 但我不想向上舍入 例如 转换1 0155555555555555 to 1 015 not 1 016 我将如何在 Ruby 中做到这一点 您还可以转换为 BigDecimal 并对其调用 trunc
  • 为什么在 SQL Server 中从 float 到 varchar 的转换要四舍五入?

    以下 SQL declare a as float b as float select a 1 353954 b 1 353956 select CAST a as VARCHAR 40 AS a float to varchar CAST
  • PHP 中检查数字是否为浮点型

    这实在是太奇怪了 我有这段代码 rewardAmt amt if is float rewardAmt print r is float die else print r is not float die amt 的值为 0 01 但它正在
  • 浮点舍入效果说明

    include
  • == 在 R 中,精度为 .Machine$double.eps [重复]

    这个问题在这里已经有答案了 在 R 中 我发现必须转换易于阅读的代码有点烦人 例如 if det A 1 not always working because of floating point precision to if abs de
  • 测试由于浮点限制而导致的舍入误差

    我最近了解到浮点的主要限制之一 事实上 某些数字无法以二进制正确表示 因此可能给出的答案对于您的目的来说不够准确 知道round 2 675 2 and round 2 665 2 两者相等2 67我尝试编写一些代码来给出具有此属性的数字列
  • 二进制浮点加法算法

    我试图理解二进制级别的 IEEE 754 浮点加法 我遵循了一些在网上找到的示例算法 并且大量测试用例与经过验证的软件实现相匹配 我的算法目前只处理正数 但是 我没有得到与此测试用例的匹配 0000100011110011011001001
  • Double.toString 对于大值没有指数表示法

    在我的 JSF2 应用程序中 我希望显示双精度值而不使用指数表示法 是否可以 我无法使用NumberFormat or DecimalFormat因为它将把我的数据类型更改为字符串 我从Java文档中了解到 如果我的double值小于10
  • 整数转浮点数

    这段代码的工作原理 posToXY Float gt Float gt Integer posToXY a b do let y a b round y 但这不起作用 posToXY Integer gt Integer gt Intege
  • 在 C# 中通过 C DLL 使用数组和指针

    我对 C 非常陌生 上周才开始学习 我有一个用 C 编写的自定义 DLL 具有以下函数 DLLIMPORT void test function double test 我想要做的是从 C 获取数组 test 的指针 因此 如果在 DLL

随机推荐

  • 如果 vbs 脚本崩溃,请重新启动它

    我正在尝试制作一个 vb 脚本 如果它崩溃 它将重新启动另一个 vb 脚本 我搜索了又搜索 但我得到的只是如何重新启动程序 并且由于 vb 脚本是后台进程 因此当您在 Win32 Process 中搜索时它不起作用 这是我的代码 set S
  • 为 ARM 交叉编译 zlib

    我尝试为arm poky linux gnueabi交叉编译zlib 但启动 make 时出现错误 zlib 1 2 11 AR HOST ar CC HOST gcc RANLIB HOST ranlib configure prefix
  • 为什么最好使用 Glib 数据类型(例如 `gint` 而不是 `int`)? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么glib要重新定义类型 https stackoverflow com questions 1819561 why does glib redefine types 在 GTK 2 0 教程中
  • 用于计算机安全的遗传算法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在为大学选择项目 我对遗传算法和计算机安全的结合非常感兴趣 因此我的问题是 是否可以使用GAany计算机安全方面 例如 我正在考虑
  • Chrome 浏览器在从 selenium 加载后立即关闭

    我正在运行一个基本的 python 程序来打开 Chrome 窗口 但是一旦代码执行 该窗口就会在那里停留一秒钟 然后立即关闭 from selenium import webdriver import time browser webdr
  • 如何组合杜松子酒中的路线组? [复制]

    这个问题在这里已经有答案了 我创建了两个不同的组gin具体路由 user and todo在两个不同的包中 我想将它们合并到一个文件中 这是我的userroutes go file package userrouter import git
  • 为复合对象编写比较器以进行二分搜索

    我有一个类和实例列表 看起来像这样 字段名称已更改以保护无辜 专有 public class Bloat public long timeInMilliseconds public long spaceInBytes public long
  • 使用 3DES 和 CBC 损坏的加密数据的前 8 个字节

    我在应用程序中使用 PyCrypto 来加密数据 但由于某种原因 无论我做什么 前 8 个字节 对应于第一个块 都会损坏 gt gt gt from Crypto Cipher import DES3 gt gt gt from Crypt
  • Rust 中的基本树和指针

    我拥有一些 C 语言背景 尝试 学习 Rust 让我对自己的能力产生了质疑 我正在尝试找出如何更改拥有的指针 并且正在努力做到这一点 除了从额外的库中复制之外 我无法弄清楚二叉树上所需的递归 特别是 我不知道如何交换指针分支 虽然使用链表我
  • 在 DNN 模块中执行 .exe

    我试图让我的 DNN 模块 6 1 3 在程序中发生特定条件时启动任何类型的可执行文件 此时我只是尝试让它运行记事本并创建一个文本文件 这就是我现在正在尝试的 ProcessStartInfo pi new ProcessStartInfo
  • SASS:直系后代规则?

    如何在 SASS 中表示直接后代 CSS 规则 Ex body gt div 在文档中似乎找不到它 http sass lang com docs yardoc file SASS REFERENCE html http sass lang
  • 将 Google 自定义搜索添加到 AMP 网站

    我有我的 Google 自定义搜索引擎 GCSE 代码
  • pip + requests.txt:奇怪的行为。不断下载各种版本的pandas

    这是用 pip 和 pandas 观察到的情况 以下是我的要求 txt asgiref 3 3 1 auditlog3 1 0 1 click 7 1 2 auditlog3 dj database url 0 5 0 Django 3 1
  • NSLog 上的 EXC_BAD_ACCESS 没有字符串格式

    我在以下代码行中收到 EXC BAD ACCESS 或 malloc 错误 NSLog Points 这对我来说毫无意义 因为它应该访问字符串常量而不是其他任何东西 通常是 EXC BAD ACCESS 但偶尔会出现以下错误 在同一行 An
  • scanf:内部带有宏(#define 常量)的模板

    我有一些像这样的代码 define MAXSIZE 100 int main char str MAXSIZE 1 scanf 100s str 问题是我仍然有 幻数 100 尽管定义了 MAXSIZE 有没有办法正确地将 MAXSIZE
  • 如何在 Symfony2 控制台命令中设置环境

    希望这是一个简单的问题 在 Symfony2 中运行控制台命令时如何指定使用哪个环境 我创建了一些命令 但是我想在我的临时服务器上的 临时 环境上下文中运行它们 在生产服务器上时在 产品 环境中运行它们 不同的环境定义不同的数据库连接 如何
  • 如何使用 Log4cxx 或 log4j 记录进程 ID

    我正在使用 log4cxx 我的项目 我可以使用 t 标记记录当前线程 id 如何在其中记录进程 id 或 log4j 我正在使用 ConversionPattern 和基于 xml 的配置文件 谢谢 基于以上答案 我将在 log4j 中执
  • 如何修复此警告“useLayoutEffect”相关警告?

    我将 NextJS 与 Material UI 和 Apollo 结合使用 虽然一切正常 但警告没有消失 在我看来 很多 Material UI 组件都在使用使用布局效果React 会发出警告 错误如下 警告 useLayoutEffect
  • ReferenceError:使用 CKEditor 时未定义 self [重复]

    这个问题在这里已经有答案了 ReferenceError 导入 CKEditor 时未定义 self 我正在使用 next js import CKEditor from ckeditor ckeditor5 react 已经安装使用 np
  • float 和 double 精度相关的概念

    为什么精度float小数点后最多 6 位 精度double小数点后最多15位 任何人都可以给一个数学解释 of it 说一下精度float or double是一些小数位数是草率的术语 float and double通常使用 IEEE 7