根据格式字符串确定小数位数

本文关键字:小数 格式 字符串 | 更新日期: 2023-09-27 18:14:28

我需要根据格式字符串识别小数位数,例如#.00应该返回2

###,#.  === > 0 
###,#.00000 ===> 4

是否有比循环遍历字符并检查其索引是否大于点并增加计数更好的方法…

根据格式字符串确定小数位数

如果您可以假设输入的小数点后只有零,则可以从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

那么你是需要计算哈希值,因为它们可能会导致出现一个额外的小数点,还是不需要计算它们,因为它们可能不会?

你可以使用这个格式来格式化数字0,计算字符数,然后减去2。

您可以使用LastIndexOf,传入.,并使用字符串长度的结果

return fmtString.Length - fmtString.LastIndexOf('.') - 1;

您应该确保字符串包含.,否则LastIndexOf将返回-1。