Помощ за домашно Compound interest (?)
Предварително искам да се извиня ако темата се дублира. Не успях да открия поле за търсене във форума.
Питането ми е за "Compound interest" в домашно #6 от курса "Basic programming - C#".
Не успях да разбера как се формира пълната лихва (FV - Future Value) на заем от приятел. Защото във формулата 'FV = PV * (1 + i)**n', както е дадена, присъства n в степенния показател, а в примерът за приятелския заем този показател отсъства. Четох и в Wikipedia, но не открих нищо за приятелски заем. Не съм икономист и се интересувам, защото повечето фирми в България проектират счетоводен софтуер.
На практика "приятелите" в един прекрасен момент могат да се окажат и гадняри.
1. Кое определя отсъствието на степенния показател в преятелския заем?
2. Защо не е дадено в условието? По подразбиране ли е?
3. Има ли наистна в Икономиката формула без степенен показател или в случая е по осмотрение на програмиста?
Благодаря.
Може да използваш placeholder и да го форматираш
Console.WriteLine("{0:0.00}", var); Console.WriteLine("{0:F2}", var);
на нулева позиция поставя променливата var във формат 0.00, ако няма цифра в промелнивата, печата 0 на конзолата. Ако имаш 254.8 ще изпечата 254.80, с F2 е същото :) може да прочетеш в книгата за форматиране на стрингове
Благодаря за отговора, но и така не сработва - продължавам да получавам грешки от рода на:
Expected output: 2255.00 Friend
Your output: 2255.0 Friend
Не ти вярвам :) Дай да видим кода. Ето семпли тестове:
1.
Console.WriteLine("{0:F3}", Math.Round(0M, 3));
Принтира: 0.000
2.
Console.WriteLine("{0:F3}", Math.Round(0.5, 3));
Принтира: 0.500
3.
Console.WriteLine("{0:F3}", Math.Round(0.53456, 3));
Принтира: 0.535
P.S.: Math.Round-а в случая е излишен.
Помъчиx се още малко, но получавам само 25/100 точки. Този път грешките са няколко Rutime Error и 2 Incorrect Result.
Ето кода:
http://pastebin.com/77ncKD1g
Ще продължа да търся грешката си, а междувременно ще се радвам и на чужда помощ.
проблемът е в начина, по който изчисляваш разходите за банката. степента се изчислява 2*2 -> 4*2 -> 8*2..., а в цикъла на теб ти се получава 2*2 -> 4*4 -> 16*16.... тоест умножава се по себе си, а не по постоянна стойност, трябва една временна променлива, която да използваш за степенуване и си готов
това е. Дори не ти трябва иф конструкция, ако стойността е 1 в началото, просто не влиза в цикъла да степенува
Така изкарва 100 в системата
Благодаря ти, че забеляза грешката ми при степенуването. Иначе аз стигнах и до друго решение с функцията .ToString(), но не мисля, че е много елегантно. Който проявява интерес, може да го види тук: http://pastebin.com/7tgNFFHm
друг начин да го направиш
конкретно за тази задача работи ок