Kao što je mnogima poznato u Bosni i Hercegovini ne postoji novčanica od 1 pfening, ali kada odete u granap često puta će te dobiti račun koji vam prodavačica ne može naplatiti jer ne postoje novčanice od 1 odnosno 2 pfeninga. Više informacija oko BH novčanica možete pogledati ovdje. Neki ovu pojavu iskorištavaju, a neki se pokušavaju prilagoditi na način da se na računu ne pojavljuju iznosi koji sadrže 1,2,3,4,6,7,8,9 pfeniga kao posljednju cifru računa.
U tu svrhu potrebno je standardno zaokruživanje koje postoji u C# poput Floor, Ceiling, Turncate obogatiti ovim bosanskim fenomenom te zaokruživati na najbliži broj 0 ili 5. U tu svrhu u narednom tekstu se nalazi implementacije metode koja ovu funkcionalnost implementira.
Potrebno je prvo iznos podjeliti sa 10 da se dobije vrijednost iza zareza u pfeninzima, a onda pogodnim ispitivanjima zaokružiti na bliži broj. Pogledajte implementaciju.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ZaokruzivanjeNaPolaPfeninga { class Program { static void Main(string[] args) { Console.WriteLine( "Iznos od {0} KM se zaokruživa na {1}", 17.61, ZaokruziNa5Feninga(17.61m).ToString("N2")); Console.WriteLine( "Iznos od {0} KM se zaokruživa na {1}", 17.62, ZaokruziNa5Feninga(17.62m).ToString("N2")); Console.WriteLine( "Iznos od {0} KM se zaokruživa na {1}", 17.63, ZaokruziNa5Feninga(17.63m).ToString("N2")); Console.WriteLine( "Iznos od {0} KM se zaokruživa na {1}", 17.64, ZaokruziNa5Feninga(17.64m).ToString("N2")); Console.WriteLine( "Iznos od {0} KM se zaokruživa na {1}", 17.65, ZaokruziNa5Feninga(17.65m).ToString("N2")); Console.WriteLine( "Iznos od {0} KM se zaokruživa na {1}", 17.66, ZaokruziNa5Feninga(17.66m).ToString("N2")); Console.WriteLine( "Iznos od {0} KM se zaokruživa na {1}", 17.67, ZaokruziNa5Feninga(17.67m).ToString("N2")); Console.WriteLine( "Iznos od {0} KM se zaokruživa na {1}", 17.68, ZaokruziNa5Feninga(17.68m).ToString("N2")); Console.WriteLine( "Iznos od {0} KM se zaokruživa na {1}", 17.69, ZaokruziNa5Feninga(17.69m).ToString("N2")); Console.WriteLine( "Iznos od {0} KM se zaokruživa na {1}", 17.70, ZaokruziNa5Feninga(17.70m).ToString("N2")); /// Console.WriteLine("Press any key to continue..."); Console.Read(); } private static decimal ZaokruziNa5Feninga(decimal iznos) { iznos *= 10; decimal cijelo = Math.Truncate(iznos); decimal ostatak = iznos - cijelo; if (ostatak < 0.29999999m) ostatak = 0; else if (ostatak < 0.8m) ostatak = 0.5m; else ostatak = 1m; return (cijelo + ostatak)/10.0m; } } }