C++ cpp部门-如何获得最准确的结果?

C++ cpp部门-如何获得最准确的结果?,c++,division,C++,Division,我想把两个变量分开,得到最准确的结果。 最好的方法是什么 i、 e.5000034/5000000=1.0000068如果你想要“最精确的精度”——你应该避免浮点运算 您可能想使用一些大的十进制库[whcih通常实现算术],并允许您定义所寻求的精度 您应该避免浮点运算,因为它们不精确[您有有限的位数来表示每个范围内的无限个数字,因此必须进行一些切片…]。定点算法[通常在大十进制库中实现]允许您“动态”分配更多位,以达到所需的精度来表示数字。 关于浮点问题的更多信息可以在这篇[稍微高级]的文章中找

我想把两个变量分开,得到最准确的结果。 最好的方法是什么

i、 e.5000034/5000000=1.0000068

如果你想要“最精确的精度”——你应该避免浮点运算

您可能想使用一些大的十进制库[whcih通常实现算术],并允许您定义所寻求的精度

您应该避免浮点运算,因为它们不精确[您有有限的位数来表示每个范围内的无限个数字,因此必须进行一些切片…]。定点算法[通常在大十进制库中实现]允许您“动态”分配更多位,以达到所需的精度来表示数字。
关于浮点问题的更多信息可以在这篇[稍微高级]的文章中找到:

如果你想要“最精确的精度”,你应该避免使用浮点算术

您可能想使用一些大的十进制库[whcih通常实现算术],并允许您定义所寻求的精度

您应该避免浮点运算,因为它们不精确[您有有限的位数来表示每个范围内的无限个数字,因此必须进行一些切片…]。定点算法[通常在大十进制库中实现]允许您“动态”分配更多位,以达到所需的精度来表示数字。

关于浮点问题的更多信息可以在这篇[有点高级]的文章中找到:

而不是(double)(N)/D,do1+((double)(N-D)/D)

而不是(double)(N)/D,do1+((double)(N-D)/D)

恐怕“最准确的结果”并不意味着什么 很没有一种有限表示法能精确地表示所有实数; 表示的精确程度取决于类型的大小 以及它的内部代表性。在大多数实现中,
double
将 给出大约17位小数的精度,通常是几阶 比输入更精确;对于单个乘法或除法,
double
通常可以。(加法和减法会出现问题 当两个值之间的差值达到极限时。)存在 提供更高精度(
BigDecimal
BigFloat
和 例如),但它们从来都不精确:最终,精度受到 你愿意让他们使用的内存量。它们也很有趣 比双倍速度慢,并且通常(稍微)更难使用 正确(因为他们有更多的选项,例如精度有多高 你想要的)。你的问题的唯一真正答案是另一个问题: 你需要多少精度?那么操作的顺序是什么呢? 舍入误差会累积,因此,虽然
double
在很大程度上就足够了 对于一个部门来说,如果天真地将其用于 迭代程序。尽管在这种情况下,解决方案并非如此 通常是为了提高精度,但在某种程度上改变了算法 为了避免这些问题。如果
double
为您提供了所需的精度, 优先于任何扩展类型使用它。如果没有,你也没有 有一个选择,然后选择一个现有的任意精度 图书馆,如GMP

(您可能对舍入的处理方式也有问题。对于 例如,出于记账目的,大多数司法管辖区都有非常严格的 关于如何对一元论价值进行舍入的法律及其规则是基于 在这种情况下,您需要一个数字类型 是否进行十进制运算以使四舍五入在所有情况下一致
例。)

恐怕“最准确的结果”并不意味着 很没有一种有限表示法能精确地表示所有实数; 表示的精确程度取决于类型的大小 以及它的内部代表性。在大多数实现中,
double
将 给出大约17位小数的精度,通常是几阶 比输入更精确;对于单个乘法或除法,
double
通常可以。(加法和减法会出现问题 当两个值之间的差值达到极限时。)存在 提供更高精度(
BigDecimal
BigFloat
和 例如),但它们从来都不精确:最终,精度受到 你愿意让他们使用的内存量。它们也很有趣 比双倍速度慢,并且通常(稍微)更难使用 正确(因为他们有更多的选项,例如精度有多高 你想要的)。你的问题的唯一真正答案是另一个问题: 你需要多少精度?那么操作的顺序是什么呢? 舍入误差会累积,因此,虽然
double
在很大程度上就足够了 对于一个部门来说,如果天真地将其用于 迭代程序。尽管在这种情况下,解决方案并非如此 通常是为了提高精度,但在某种程度上改变了算法 为了避免这些问题。如果
double
为您提供了所需的精度, 优先于任何扩展类型使用它。如果没有,你也没有 有一个选择,然后选择一个现有的任意精度 图书馆,如GMP

(您可能对舍入的处理方式也有问题。对于 例如,出于记账目的,大多数司法管辖区都有非常严格的 关于如何对一元论价值进行舍入的法律及其规则是基于 在这种情况下,您需要一个数字类型 是否进行十进制运算以使四舍五入在所有情况下一致
例。)

浮点数对于乘法和除法可能是最精确的,而整数和定点数是加法和减法的最佳选择。这源于乘法和di