我想知道是否存在一种简洁准确的方法来提取十进制值(作为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;
但是在我看来,这仅适用于使用“。”的区域。作为小数点分隔符,因此在不同系统之间非常脆弱。
我用乔的方法来解决这个问题:)
decimal argument = 123.456m; int count = BitConverter.GetBytes(decimal.GetBits(argument)[3])[2];