我敢说,由Fortran和C++计算得出的数字数值将更加相似。 然而,从我所经历的情况来看,计算数字在数字太少后开始出现差异。 在将某些遗产法典从前语言传给后一种语言的过程中,我已经走过这个问题。 原来的第77号法典......
INTEGER M, ROUND
DOUBLE PRECISION NUMERATOR, DENOMINATOR
M = 2
ROUND = 1
NUMERATOR=5./((M-1+(1.3**M))**1.8)
DENOMINATOR = 0.7714+0.2286*(ROUND**3.82)
WRITE (*, (F20.15) ) NUMERATOR/DENOMINATOR
STOP
......产出<>0.842201471328735,而C++当量......
int m = 2;
int round = 1;
long double numerator = 5.0 / pow((m-1)+pow(1.3, m), 1.8);
long double denominator = 0.7714 + 0.2286 * pow(round, 3.82);
std::cout << std::setiosflags(std::ios::fixed) << std::setprecision(15)
<< numerator/denominator << std::endl;
exit(1);
页: 1 也就是说,计算出来的数值等于,直到第6条标准>为止。 尽管我不是特别的反对者,但我感到倾向于认为其结果是正确的,因为它具有珍爱号的合法声誉。 然而,我对计算价值之间的这一差异的原因作了解释。 是否有任何人知道这一差异的原因?