using System.Collections.Generic;
public static class Program
public static void Main()
10000000000000000.ToString("X").Dump();
double baseValue = 1.0e+16;
Enumerable.Range(-2, 14).Select(smallValue => baseValue + smallValue)
.Select((result, index) => new { result, index })
.Select(pack => baseValue.AdditionalValueLostReport(pack.index - 2, pack.result)).DumpLines();
Enumerable.Range(-3, 18).Select(smallValue => baseValue * 2 + smallValue)
.Select((result, index) => new { result, index })
.Select(pack => baseValue.AdditionalValueLostReport(pack.index - 3, pack.result)).DumpLines();
Enumerable.Range(-5, 27).Select(smallValue => baseValue * 4 + smallValue)
.Select((result, index) => new { result, index })
.Select(pack => baseValue.AdditionalValueLostReport(pack.index - 5, pack.result)).DumpLines();
public static string AdditionalValueLostReport(this double largeInteger, int smallInteger, double result)
return string.Format("{0:G17} + ({1, 2:G17}) = {2:G17}", largeInteger, smallInteger, result);
public static void DumpLines(this IEnumerable<string> lines)
foreach (var line in lines)
Console.WriteLine(string.Empty);
public static void Dump(this string value)
Console.WriteLine(value);