当前位置: 首页 > 知识库问答 >
问题:

机器上给定双精度值的最大精度代表值是多少?

罗梓
2023-03-14

以下代码中的几个问题:

a)std::numeric_limits::digits10表示什么?b)如果(a)表示在机器上可重新呈现的最大10位双数,那么我们可以通过添加1,2来获得越来越高的精度,然后机器上可重新呈现的最大双数是多少?如何显示?即什么std::numeric_limits::digits10 MaxN?

#include <iostream>
#include <iomanip>
#include <cmath>
#include <limits>


int main(void)
{
  double d1 = 0.1;
  double d2 = 0.2;
  double d3 = d1 + d2;
  std::cout << std::setprecision(std::numeric_limits<long double>::digits10 + 1) << "Sum 0.1 + 0.2 = " << d3 << std::endl;
  std::cout << std::setprecision(std::numeric_limits<long double>::digits10 + 2) << "Sum 0.1 + 0.2 = " << d3 << std::endl;
  std::cout << std::setprecision(std::numeric_limits<long double>::digits10 + 3) << "Sum 0.1 + 0.2 = " << d3 << std::endl;
  std::cout << std::setprecision(std::numeric_limits<long double>::digits10 + 4) << "Sum 0.1 + 0.2 = " << d3 << std::endl;
  return 0;
}

共有1个答案

施飞昂
2023-03-14

std::numeric_limits::digits10表示什么?

double通常是64位,可以精确地表示大约2个不同的值。

"0.1""3.1415926535897932384626433832795"等文本具有无限的可能性。

将文本转换为double,然后再转换回文本,我们会得到相同的文本吗(往返)?这并不适用于所有可能的文本。

以文本可能性的子集为例,只说那些前导有效小数位数不超过N且指数范围有限的文本。

数值限制

机器上给定双精度值的最大精度代表值是多少?

典型的使用base 2编码,其最大精度为53个有效二进制数字。

可以通过添加越来越精确...

选择值,用十进制写,需要超过N有效位数才能准确写入。我想最多大约754。

编写一个numeric_limits

一个高质量的doubleto text函数肯定会正确地写入至少max_digits10十进制数字。除此之外,这取决于实施。为了满足IEEE 754标准,我确信最低标准是max_digits10 3

数值限制

 类似资料:
  • 问题内容: 我试图确定双精度的最大精度是多少。在此链接的可接受答案的注释中,Java中的double保持精度 @PeterLawrey将max precision设置为15。 您如何确定呢? 问题答案: @PeterLawrey表示最大精度为15。 实际上,这根本不是他所说的。他说的是: 双精度有15个小数位 他错了。它们的精度为15个十进制 数字 。 任何数字中的小数位数由其对数10的对数给出。

  • 我试图确定double的最大精度是多少。在这个链接中接受的答案的注释中,Java中的Retain precision with double@PeterLawrey声明max precision In 15。 你如何确定这一点?

  • 问题内容: 我正在编写一个简单的Java程序。我需要从输入中获取一个字符串并将其分为两部分:1-double 2-string。然后,我需要对double进行简单的计算,并将结果发送到具有特定精度的输出(4)。它工作正常,但是当输入为0时出现问题,则不能正常工作。 例如,对于这些输入,输出将是: 1公斤 输出:2.2046 3.1公斤 输出:6.8343 但是当输入为0时,输出应为0.0000,但

  • 问题内容: 这是一个例子: 这将返回0,而不是应有的0.33333…。 有人知道吗? 问题答案: 这是因为和会被视为您没有另外指定时的处理方式,因此先评估, 然后将转换为。要解决此问题,请尝试,或者明确声明您正在处理double值。

  • 问题内容: 如何使用正则表达式从字符串中提取双精度值。 问题答案: 这是简单的方法。请勿将regex用于内置类型。

  • 问题内容: 是否有比浮点精度更好的数据类型? 问题答案: 小数数据类型 与基于硬件的二进制浮点数不同,十进制模块具有用户可更改的精度(默认为28位),可以与给定问题所需的精度一样大。 如果您对性能问题感到困扰,请查看GMPY