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