string FormatDuration (double duration)
{
var ci = CultureInfo.InvariantCulture;
if (duration <= 0)
throw new ArgumentOutOfRangeException (nameof (duration));
if (duration < 1) {
// e.x. 1/1000 1/350 etc
var digits = (int)Math.Max (0, 2 + Math.Floor (Math.Log10 (duration)));
string pattern = "1/{0:####." + new string ('0', digits) + "}";
return string.Format (pattern, 1.0 / duration, ci);
}
return duration.ToString ("F2", ci);
}