Пытаюсь сделать одинаковое вычисление с помощью C++ чтобы точность была как в языке Ruby, однако C++ жестче округляет значения а делать round() для каждого прохода не вариант так как чисел после запятой может быть от 1 до 16, что посоветуете?
a = 3.2
b = 4.2
p = 8.3
puts ((a+b) * (p / 100)) # 0.6142000000000001
#include <stdio.h>
#include <iostream>
using namespace std;
int main(void)
{
long double a = 3.2;
long double b = 4.2;
long double p = 8.3;
cout << (a+b) * (p / 100) << endl; // 0.6142
return 0;
}
----
a = 9.809999999999999
b = 11.1
p = 8.3
puts ((a+b) * (p / 100)) # 1.7355299999999998
#include <stdio.h>
#include <iostream>
using namespace std;
int main(void)
{
long double a = 9.809999999999999;
long double b = 11.1;
long double p = 8.3;
cout << (a+b) * (p / 100) << endl; // 1.73553
return 0;
}