using System.Diagnostics;
private static decimal PrzytnijZeraNowy(decimal liczba, bool przejsciowy)
decimal powiekszenie, odwrocenie, odcinkaZer = 1;
odwrocenie = 1 / powiekszenie;
odcinkaZer=1.000000000000000000000000000000000M;
liczba = decimal.Round(liczba * powiekszenie) / powiekszenie;
return (liczba + odwrocenie - odwrocenie) / odcinkaZer;
private static decimal PrzytnijZeraStary(decimal liczba, bool przejsciowy)
decimal poKonwersji = Convert.ToDecimal(string.Format("{0:N3}", liczba));
decimal poKonwersji = Convert.ToDecimal(liczba.ToString("0.######"));
public static void Main(string[] args)
const decimal v1 = 99999M, v2 = 99.999M, v3 = 10000.010M, v4 = 1.1M, v5 = -9999999999999999.9991459558M;
Console.WriteLine("Stary algorytm");
Console.WriteLine(PrzytnijZeraStary(v1, true));
Console.WriteLine(PrzytnijZeraStary(v2, true));
Console.WriteLine(PrzytnijZeraStary(v3, true));
Console.WriteLine(PrzytnijZeraStary(v4, true));
Console.WriteLine(PrzytnijZeraStary(v5, true));
Console.WriteLine("Stary algorytm - w trakcie przejsciowego");
Console.WriteLine(PrzytnijZeraStary(v1, false));
Console.WriteLine(PrzytnijZeraStary(v2, false));
Console.WriteLine(PrzytnijZeraStary(v3, false));
Console.WriteLine(PrzytnijZeraStary(v4, false));
Console.WriteLine(PrzytnijZeraStary(v5, false));
Console.WriteLine("Nowy algorytm");
Console.WriteLine(PrzytnijZeraNowy(v1, true));
Console.WriteLine(PrzytnijZeraNowy(v2, true));
Console.WriteLine(PrzytnijZeraNowy(v3, true));
Console.WriteLine(PrzytnijZeraNowy(v4, true));
Console.WriteLine(PrzytnijZeraNowy(v5, true));
Console.WriteLine("Nowy algorytm - w trakcie przejsciowego");
Console.WriteLine(PrzytnijZeraNowy(v1, false));
Console.WriteLine(PrzytnijZeraNowy(v2, false));
Console.WriteLine(PrzytnijZeraNowy(v3, false));
Console.WriteLine(PrzytnijZeraNowy(v4, false));
Console.WriteLine(PrzytnijZeraNowy(v5, false));