Если вы можете предположить, что входные данные будут иметь только нули после десятичного числа, вы можете вычесть длину строки из IndexOf (".").
(str.Length - str.IndexOf('.') - 1)
В противном случае вам придется считатьнули после десятичной дроби.Я бы лично использовал утверждение LINQ.Это не будет более производительным, но это будет выглядеть лучше.
str.SkipWhile(c => c != '.').Count(c => c == '0')
Конечно, есть и другие предостережения.Чтобы придумать «правильный» ответ, вам нужно будет предоставить больше информации о том, как вы хотите обрабатывать такие случаи:
(12345.4321).ToString("#.##") // 12345.43
(12345.4321).ToString("#.#####") // 12345.4321
(12345.4321).ToString("#.#####-0") // 12345.43210-0
Так что вам нужно считать хэши, потому что они могут привести к появлению лишних десятичных знаков или не считать их, потому что они не могут?