摘要 用另一种方法计算计算机的错误计算(五十五)中案例:先使自变量与 取余,再计算取余后的余弦值,这时,得到了不同的输出。因此,即使不清楚正确结果,Python 与 Visual Studio 也各自自证错误。
有网友反映,对于(五十五)中案例,若按照(五十四)中方法,先使自变量与 取余,再计算取余后的余弦值,则得到不同的输出。
下面还原这位网友的计算过程。
例1. 计算 的值。
先看 Python的计算过程与输出:
这样得到了与(五十五)中不同的结果。因此,即使不知道正确结果,也知道Python出错了。
然后讨论 Visual Studio 2010的输出。
下面是代码:
#include "stdafx.h"
#include <math.h>
#include <stdlib.h>
const double pi = 3.14159265358979323846;
//取余数
double mod_2pi(double x)
{
double quotient = floor(x / (2 * pi));
double remainder = x - (quotient * (2 * pi));
return remainder;
}
int main()
{
double x = pow(30,(double)65);
double y= cos(mod_2pi(x));
printf("%lf\n",y);
return 0;
}
运行后,输出为 1.000000 . 这样,同样与(五十五)中结果不一致。Visual Studio自己的输出就证明了它自己具有错误。
怎么样感觉?难不难?您写出来的高精度运算代码能计算出准确结果吗?换个方法计算仍然是正确结果吗?