我想通过Convert.ToDecimal函数将double转换为小数。 问题是,.net根据原始双变量的大小选择省略小数位。Double Convert.ToDecimal控制十进制数字
看看下面的例子:
double d = 2999247013.972682;
decimal convDecimal = Convert.ToDecimal(d);
decimal realDecimal = 2999247013.972682M;
Console.WriteLine(d);
Console.WriteLine(convDecimal);
Console.WriteLine(realDecimal);
将会产生以下的输出:
2999247013,97268 // comments: (actual value 2999247013,972682)
2999247013,97268 // comments: (actual value 2999247013,97268)
2999247013,972682 // comments: (actual value 2999247013,972682)
( '' 是当前语言环境的小数点分隔符)
什么,我想实现方法是使用Convert.ToDecimal(d)并获取十进制数2999247013,972682。
任何想法的人?
因此,据我所知,问题是Convert.ToDecimal无法处理超过15个有效数字,即使Decimal作为类型明确支持此值。 – Entrodus
问题不在于'Decimal'可以支持更多数字,而是'Double'值是有限的。小数比双精度更精确,所以限制因素是你传入方法的两倍。 – keyboardP
好的。事情现在开始有意义。感谢您的所有信息。 – Entrodus