以下代码中的几个问题:
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;
}
std::numeric_limits::digits10表示什么?
double
通常是64位,可以精确地表示大约2个不同的值。
像"0.1"
,"3.1415926535897932384626433832795"
等文本具有无限的可能性。
将文本转换为double
,然后再转换回文本,我们会得到相同的文本吗(往返)?这并不适用于所有可能的文本。
以文本可能性的子集为例,只说那些前导有效小数位数不超过N且指数范围有限的文本。
数值限制
机器上给定双精度值的最大精度代表值是多少?
典型的
双
使用base 2编码,其最大精度为53个有效二进制数字。
可以通过添加越来越精确...
选择
双
值,用十进制写,需要超过N
有效位数才能准确写入。我想最多大约754。
编写一个
双
到numeric_limits
一个高质量的
double
to 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