Почему long int и int выдают одинаковую точность?
#include "iostream"
#include "iomanip"
#include "math.h"
using namespace std;
const double pi = 3.1415926535897932384626433;
long long int factorial(int n) {
long long int result = 1;
for (int i = 2; i <= n; i++) {
result *= i;
}
return result;
}
class trigonometry {
private:
const double eps = 0.000000000000000000000000000001;
public:
double _sin(double argv) {
if (argv < 0) {
return -sin(-argv);
}
else {
while (argv >= 2 * pi) {
argv -= 2 * pi;
}
if (argv >= pi / 2) {
return cos(argv - pi / 2);
}
else {
double result=0;
for (int i = 0; pow(argv, 2 * i) / factorial(2 * i) > eps; i++) {
result += pow(-1, i) * pow(argv, 2 * i + 1) / factorial(2 * i + 1);
}
return result;
}
}
}
double _cos(double argv) {
if (argv < 0) {
return cos(-argv);
}
else {
while (argv >= 2 * pi) {
argv -= 2 * pi;
}
if (argv >= pi / 2) {
return -sin(argv - pi / 2);
}
else {
double result=0;
for (int i = 0; pow(argv, 2 * i) / factorial(2 * i) > eps; i++) {
result += pow(-1, i) * pow(argv, 2 * i) / factorial(2 * i);
}
return result;
}
}
}
double _tan(double argv) {
return _sin(argv) / _cos(argv);
}
double _cot(double argv) {
return _cos(argv) / _sin(argv);
}
};
int main() {
trigonometry a;
cout <<setprecision(25) << fixed <<a._cos(100);
cout << '\n';
system("pause");
return 0;
}
Почему в функции factorial типы переменных int и long long int выдают одинаковую точность на выходе?