это 99855.7-145.022, но ответ уже округлен
вам просто нужно напечатать больше цифр, например, выполните:
cout << std::setprecision(15);
где-то раньше другой отпечаток, для этого вам нужно
#include <iomanip>
, и у вас будет
pi@raspberrypi:/tmp $ ./a.out
CMP Calculator
Base Principal:100000
MRI:41
Monthly Amortization:685.3
Number of transaction:1
Amortization amount paid:686
Interest:500
Principal Paid:144.3
Advance:0.700000000000045
Total Principal:99855.7
Do you want to continue?:[Y/N]y
Number of transaction:2
Amortization amount paid:686
Interest:499.2785
Principal Paid:145.0215
Advance:1.40000000000009
Total Principal:99710.6785
Do you want to continue?:[Y/N]n
Напечатанное значение Total Principal является правильным, в любом случае, понять В определении есть предел точности любых чисел с плавающей запятой, и вы можете увидеть это в напечатанных значениях для Advance .
Если ваш компилятор поддерживает long double
, вы можете использовать их, также спрашивая для печати 20 цифр результат будет:
bruno@bruno-XPS-8300: / tmp $ ./a.out
CMP Calculator
Base Principal:100000
MRI:41
Monthly Amortization:685.3
Number of transaction:1
Amortization amount paid:686
Interest:499.99999999999998149
Principal Paid:144.30000000000001853
Advance:0.7000000000000000111
Total Principal:99855.699999999999982
Do you want to continue?:[Y/N]y
Number of transaction:2
Amortization amount paid:686
Interest:499.27849999999998143
Principal Paid:145.02150000000001856
Advance:1.4000000000000000222
Total Principal:99710.678499999999964
Do you want to continue?:[Y/N]n
Обратите внимание, что вы пропустили инициализацию x с 0, и это может быть int
, а не double