【发布时间】:2013-03-27 17:37:13
【问题描述】:
在算法中检查数值精度的最佳做法是什么? 是否有任何建议的技术来解决“我们如何知道我们计算的结果是正确的”这个问题? 如果可能:是否有一些 C++ 中数值精度增强的例子?
感谢您的任何建议!
【问题讨论】:
-
int types = 100% 精度支持整数数字区间。浮点类型 = 仅支持一小部分有理数。有理数的任意精度(您可以从中选择)是通过将这些存储为 2 个整数的各种库实现的,有时称为“小数”或“小数”
-
@deathApril -
3/2 == 1不是 100% 的精度。只是程序员已经学会了期望。不幸的是,他们通常对浮点的了解还不够,无法知道从3.333 * 3.0这样的表达式可以得到什么。 -
@PeteBecker
3/2 == 1为 integer division,余数为 1。 -
@deathApril - 是的,很明显。您在浮点算术中看到的任何“异常”对于浮点算术都是正确。正如我所说,大多数程序员只是对浮点运算知之甚少,无法做到正确。
-
@deathApril:
3/2==1因为位数有限,特别是小数部分的 0 位。浮点数的小数部分的位数是可变的(这就是它不是固定点的原因),但即使这个可变位数仍然是有限的。