4

同じ計算を 2 回繰り返していますが、一方では浮動小数点例外が発生し、他方ではそうではありません。

#include <iostream>
#include <cmath>
#include <fenv.h>

using namespace std;

int main(void)
{
  feenableexcept(-1);

  double x,y,z;

  x = 1.0;

  y = (1.0/(24.3*24.0*3600.0))*x;
  cout << "y = " << y << endl;

  z = x/(24.3*24.0*3600.0);
  cout << "z = " << z << endl;

  return 0;
}

g ++とclang ++の両方でテストしたところ、両方で次の出力が得られました

y = 4.76299e-07
Floating point exception

どうしたの?

4

2 に答える 2