Вопрос в том, действительно ли вам нужна точность , хранящаяся в десятичной дроби, а не просто отображение десятичной дроби с требуемой точностью.
Большинство приложений знают, насколько они точны, и отображают их с таким уровнем точности. Например, даже если пользователь вводит счет-фактуру на 100 в пакете учетных записей, он все равно печатает как 100,00, используя что-то вроде val.ToString ("n2").
Как я могу создать б из а? Как я могу создать б из с?
возможно от c до b.
Console.WriteLine(Math.Round(2.00000000m, 1))
производит 2,0
от a до b сложно, поскольку концепция введения точности немного чужды математике.
Полагаю, ужасный хак может быть в оба конца.
decimal b = Decimal.Parse(a.ToString("#.0"));
Console.WriteLine(b);
производит 2,0