一尘不染

在不考虑区域性的情况下,在十进制值中查找小数位数

c#

我想知道是否存在一种简洁准确的方法来提取十进制值(作为int值)中的小数位数,从而可以在不同的区域性信息中安全使用?

例如:
19.0应该返回1,
27.5999应该返回4,
19.12应该返回2,
等等。

我编写了一个查询,该查询在句点上进行了字符串拆分以查找小数位:

int priceDecimalPlaces = price.ToString().Split('.').Count() > 1 
                  ? price.ToString().Split('.').ToList().ElementAt(1).Length 
                  : 0;

但是在我看来,这仅适用于使用“。”的区域。作为小数点分隔符,因此在不同系统之间非常脆弱。


阅读 212

收藏
2020-05-19

共1个答案

一尘不染

我用乔的方法来解决这个问题:)

decimal argument = 123.456m;
int count = BitConverter.GetBytes(decimal.GetBits(argument)[3])[2];
2020-05-19