struct TimeSpan { long ticks; const int TicksPerSecond = 10000000; const int TicksPerMillisecond = 10000; public double TotalMilliseconds { get { return ticks / (double)TicksPerMillisecond; } } static void Main() { TimeSpan foo, bar; // this value uses 30 bits foo.ticks = 1000000000L; bar.ticks = foo.ticks + 10; System.Console.WriteLine("Delta: {0:0.0000}ms", bar.TotalMilliseconds - foo.TotalMilliseconds); // this value uses 50 bits foo.ticks = 1000000000000000L; bar.ticks = foo.ticks + 10; System.Console.WriteLine("Delta: {0:0.0000}ms", bar.TotalMilliseconds - foo.TotalMilliseconds); // this value uses 60 bits foo.ticks = 1000000000000000000L; bar.ticks = foo.ticks + 10; System.Console.WriteLine("Delta: {0:0.0000}ms", bar.TotalMilliseconds - foo.TotalMilliseconds); } }