Десятичные проблемы вычитания которые влияют на мою выходную кредитную систему
Я всегда получаю неправильное десятичное число в 3-й записи цикла i. Если я использую калькулятор, то получаю правильный результат, но если я помещаю его в excel, то получаю неправильный результат в десятичной системе счисления. что я хочу, так это иметь тот же результат в excel и моей системе
например.
я попробовал использовать десятичную дробь.Round(value,2) Да, это решает 2-ю запись от округления, но следующая проблема возникает в 3-й записи
[ Принципал: 773192.13 ] и значение, которое мне нужно показать, таково:
[ 773192.12 ] потому что это результат в excel и потому что он округляется для принципала, результат в балансе идет вверх
Это результат в excel, вы заметите, что я ставлю некоторые +1 или -1 -2 это результат в моей системе он продолжает вычитание или добавление у меня есть -0.05 в моем балансе в качестве конечного результата
[ Результат Excel ]
Основной Капитал: 765517.81 Проценты: 128000.00 Остаток Средств: 24834482.19
Основной Капитал: 769345.40 Проценты: 124172.41 Остаток Средств: 24065136.79
Основной Капитал: 773192.12 Проценты: 120325.68 Остаток Средств: 23291944.67
Основной Капитал: 777058.09 Проценты: 116459.72 Остаток Средств: 22514886.58
Основной Капитал: 780943.38 Проценты: 112574.43 Остаток Средств: 21733943.21
Основной Капитал: 780943.09 Проценты: 108669.72 Остаток Средств: 20949095.12
[ Системный Результат ]
Основной Капитал: 765517.81 Проценты: 128000.00 Остаток Средств: 24834482.19
Основной Капитал: 769345.40 Проценты: 124172.41 Остаток Средств: 24065136.79
Основной Капитал: 773192.13 +1 Проценты: 120325.68 Остаток Средств: 23291944.66 -1
Основной Капитал: 777058.09 Проценты: 116459.72 Остаток Средств: 22514886.57 -1
Основной Капитал: 780943.38 Проценты: 112574.43 Остаток Средств: 21733943.19 -2
Основной Капитал: 784848.09 Проценты: 108669.72 Остаток Средств: 20949095.11 -1
Что я уже пробовал:
below is my code. Dim balance As Double = 25600000 Dim pmtmonthlyamortization As Double = 893517.81 Dim interestrate As Double = 6.0 / 100 Dim TotPmts As Double Dim mprincipal As Double Dim minterest As Double TotPmts = CDbl(Val(5)) For i = 0 To TotPmts minterest = Decimal.Round((balance * (interestrate / 12), 2 ) mprincipal = Decimal.Round((pmtmonthlyamortization - minterest), 2 ) balance = Decimal.Round((balance - mprincipal), 2 ) MessageBox.Show(minterest & vbNewLine & mprincipal & vbNewLine & vbNewLine & balance) Next