我想知道是否有一种简洁而准确的方法来提取十进制值中的小数位数(作为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;
Run Code Online (Sandbox Code Playgroud)
但我发现这只适用于使用'.'的地区.作为小数分隔符,因此在不同系统中非常脆弱.
我有一种非常紧凑的方法来删除十进制值中的尾随零,但我更喜欢一种不涉及字符串往返的方法,就像我目前所做的那样。这是我当前的解决方案:
var value = 0.010m;
value = decimal.Parse(value.ToString("G29"));
Console.WriteLine(value); // prints 0.01 (not 0.010)
Run Code Online (Sandbox Code Playgroud)
所以它有效,但是你有更好的方法吗?
另外,第二个问题是decimalValue.ToString() 100% 符合xs:decimal?