Как я могу предотвратить двойное неправильное вычитание десятичной дроби
я всегда получаю неправильное десятичное число в 3-й записи цикла i. Если я использую калькулятор, то получаю правильный результат, но если я помещаю его в excel, то получаю неправильный результат в десятичной системе счисления. что я хочу, так это иметь тот же результат в excel и моей системе
например.
мой результат в excel для принципала составляет 765 517,81,но для 3-й записи я получаю 769 345,39
ниже приведен мой код.
Тусклый баланс как двойной = 25600000
Дим pmtmonthlyamortization как дважды = 893517.81
Dim interestrate As Double = 6.0 / 100
Dim TotPmts As Double
Тусклый мпринципал как двойной
Тусклый minterest как двойной
TotPmts = CDbl(Val(5))
Для i = 0 до TotPmts
minterest = (баланс * (interestrate / 12))
mprincipal = (pmtmonthlyamortization - minterest)
баланс = (баланс - mprincipal)
С помощью MsgBox(minterest &амп; vbNewLine &амп; mprincipal &амп; vbNewLine &амп; vbNewLine &амп; баланс)
Следующий
Что я уже пробовал:
я уже пробовал использовать DOUBLE,DECIMAL,LONG
Richard MacCutchan
Не используйте Double для финансовых расчетов; используйте десятичный тип, вот для чего он был разработан.
Member 14076249
я уже пробовал использовать десятичную систему счисления, но продолжаю получать ту же ошибку с десятичной системой счисления
Richard MacCutchan
Вы не получаете ошибку, вы получаете другое значение.
Member 14076249
да! я получаю 769,345.39 вместо 769,345.40 ,системное значение равно 769,345.39905
Richard MacCutchan
Это просто округление различий.
Member 14076249
но как мне показать ему то, что я точно хочу, как 769,345.40 не .39
Richard MacCutchan
Вам нужно использовать округление, чтобы получить нужное значение. Когда я использую десятичные типы, я получаю следующие результаты:
Interest: 128000.0000 Principal: 765517.8100 Balance: 24834482.1900 Interest: 124172.4109500 Principal: 769345.3990500 Balance: 24065136.7909500 Interest: 120325.6839547500 Principal: 773192.1260452500 Balance: 23291944.6649047500 Interest: 116459.7233245237500 Principal: 777058.0866754762500 Balance: 22514886.5782292737500 Interest: 112574.4328911463687500 Principal: 780943.3771088536312500 Balance: 21733943.2011204201187500 Interest: 108669.7160056021005937500 Principal: 784848.0939943978994062500 Balance: 20949095.1071260222193437500
Richard MacCutchan
И когда я использую Decimal.Round(value, 2)
Я получаю:
Interest: 128000.00 Principal: 765517.81 Balance: 24834482.19 Interest: 124172.41 Principal: 769345.40 Balance: 24065136.79 Interest: 120325.68 Principal: 773192.13 Balance: 23291944.66 Interest: 116459.72 Principal: 777058.09 Balance: 22514886.58 Interest: 112574.43 Principal: 780943.38 Balance: 21733943.20 Interest: 108669.72 Principal: 784848.09 Balance: 20949095.11
Member 14076249
но куда мне девать эту десятичную дробь?Round(value,2) ?, exatly это результат, который я хочу, но некоторые десятичные числа не совпадают с excel, 3-я запись в основном должна быть .12, как в excel, а для баланса 3-я .66 должна быть .67, как в excel то же самое происходит с пятой записью .20 = .21
Richard MacCutchan
Я использовал только десятичную дробь.Вызов Round() в точке, где я отображал значения. Не используйте его на этапах расчета.
Member 14076249
я попробовал использовать десятичную дробь.Round(value,2) Да, это решает 2-ю запись от округления, но следующая проблема возникает в 3-й записи
[ Принципал: 773192.13 ] и значение, которое мне нужно показать, таково:
[ 773192.12 ] потому что это результат в excel и потому что он округляется для принципала, результат в балансе идет вверх
это результат в excel, вы заметите, что я ставлю некоторые +1 или -1 -2 это результат в моей системе он продолжает вычитание или добавление у меня есть -0.05 в моем балансе в качестве конечного результата
Основной Капитал: 765517.81 Проценты: 128000.00 Остаток Средств: 24834482.19
Основной Капитал: 769345.40 Проценты: 124172.41 Остаток Средств: 24065136.79
Основной Капитал: 773192.12+1 Проценты: 120325.68 Остаток Средств: 23291944.67 -1
Основной Капитал: 777058.09 Проценты: 116459.72 Остаток Средств: 22514886.58 -1
Основной Капитал: 780943.38 Проценты: 112574.43 Остаток Средств: 21733943.21 -2
Member 14076249
[ Системный Результат ]
Основной Капитал: 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