using System.Collections.Generic;
public static void Main()
var ranges = new List<(decimal, decimal)>()
var sortableStrings = new List<string>();
foreach (var range in ranges)
var sortableX = GetSortableString(x);
var sortableY = GetSortableString(y);
var sortableString = $"{sortableX},{sortableY}";
sortableStrings.Add(sortableString);
foreach (var s in sortableStrings)
public static string GetSortableString(decimal value)
var parts = value.ToString($"F{decimalPlaces}").Split('.');
var integerPart = Math.Abs(int.Parse(parts[0])).ToString();
var fractionalPart = parts.Length > 1 ? parts[1] : "";
fractionalPart = fractionalPart.PadRight(decimalPlaces, '0');
var sign = value < 0 ? "0" : "1";
integerPart = integerPart.PadLeft(40, '0');
return $"{sign}{integerPart}{fractionalPart}";