Я могу предложить вам использовать провайдера нестандартного формата примерно так, это должно решить вашу проблему
class CustomFormatter : IFormatProvider, ICustomFormatter{}
string.Format(new CustomFormatter(), "{0}", yourDecimalValue)
если вы хотите указать некоторые дополнительные параметры, вы можете передать их в ctor CustomFormatter.
Попробуйте поиграть с этим кодом, и я думаю, вы найдете именно то, что хотите.
Спасибо,
Kiryl