using System;
public class Test
{
public static void Main()
{
for (decimal x = 1 ; x != 2 ; x+=0.01M) {
decimal y = CustomRound(x);
Console.WriteLine("{0:0.00} {1:0.00}", x, y);
}
}
private static decimal CustomRound(decimal x)
{
var rX = Math.Truncate(x * 100) / 100;
var t = rX * 100 % 5;
if (t == 0) return rX;
if (t < 3)
rX = rX - ((decimal)t / 100);
else if (t < 8)
rX = rX + (0.05m - ((decimal)t / 100));
else
rX = rX + ((decimal)t / 100);
return rX;
}
}
dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCWZvciAoZGVjaW1hbCB4ID0gMSA7IHggIT0gMiA7IHgrPTAuMDFNKSB7CgkJCWRlY2ltYWwgeSA9IEN1c3RvbVJvdW5kKHgpOwoJCQlDb25zb2xlLldyaXRlTGluZSgiezA6MC4wMH0gezE6MC4wMH0iLCB4LCB5KTsKCQl9Cgl9CgkKCXByaXZhdGUgc3RhdGljIGRlY2ltYWwgQ3VzdG9tUm91bmQoZGVjaW1hbCB4KQogICAgewogICAgICB2YXIgclggPSBNYXRoLlRydW5jYXRlKHggKiAxMDApIC8gMTAwOwogICAgICB2YXIgdCA9IHJYICogMTAwICUgNTsKICAgICAgaWYgKHQgPT0gMCkgcmV0dXJuIHJYOwogICAgICBpZiAodCA8IDMpCiAgICAgICAgclggPSByWCAtICgoZGVjaW1hbCl0IC8gMTAwKTsKICAgICAgZWxzZSBpZiAodCA8IDgpCiAgICAgICAgclggPSByWCArICgwLjA1bSAtICgoZGVjaW1hbCl0IC8gMTAwKSk7CiAgICAgIGVsc2UKICAgICAgICByWCA9IHJYICsgKChkZWNpbWFsKXQgLyAxMDApOwogICAgICByZXR1cm4gclg7CiAgICB9Cn0=