using System.Text.RegularExpressions;
public static void Main()
double dd = 597.617499828338623;
Console.WriteLine("Original: "+ dd);
Console.WriteLine("Rounded: " + Conv(dd,relscale));
Console.WriteLine("Symbol ^fgf : " + SymbolLocaliser("^fgf"));
Console.WriteLine("Symbol d^fgf : " + SymbolLocaliser("d^fgf"));
Console.WriteLine("Symbol dd^f : " + SymbolLocaliser("dd^f"));
static string SymbolLocaliser(string symbol)
var locsymb = symbol.Replace('/', '-');
locsymb = Regex.Replace(symbol, @"(.{1,})[\^](.+)", "$1-P$2");
public static double Conv(double V, int relativeScale, int minscale = 0)
if((int.MinValue != relativeScale)){
size = (int.MinValue != 0) ? (int)Math.Round(Math.Log10(Convert.ToDouble(V))) :0;
Scale = Math.Max(minscale, relativeScale - size);
var rv = Math.Round(V, Scale);
Console.WriteLine("rv: "+ rv);
var rv1 = Math.Round(V, Scale+2);
Console.WriteLine("rv1 "+ rv1);
var rvdiff = (rv-rv1) * (Math.Pow(10 , Scale+2));
Console.WriteLine("rvdiff: "+ rvdiff);
return Conv(V, int.MinValue, Scale+1 );
Console.WriteLine("rvdiff: "+ rvdiff);