我有一个小数点后有 17 位的 double
,即:
double myDouble = 0.12345678901234567;
如果我像这样将其转换为 decimal
:
decimal myDecimal = Convert.ToDecimal(myDouble);
然后根据 Convert.ToDecimal
文档,将 myDecimal
的值四舍五入为 15 位数字(即 0.0123456789012345
)。我的问题是,为什么要进行舍入?
我明白,如果我的原始数字可以以 10 为基数准确表示,并且我试图将其存储为 double
,那么我们只能对前 15 位数字有信心。最后两位数字可能会出现舍入误差。但是,这是一个以 10 为基数的偏见观点。我的数字可能更准确地表示为 double
,我希望将其转换为 decimal
,同时尽可能保持准确性。
Convert.ToDecimal
不应该旨在最小化 myDouble
和 (double)Convert.ToDecimal(myDouble)
之间的差异吗?
最佳答案
A Double value has up to 15 decimal digits of precision, although a maximum of 17 digits is maintained internally
因此,由于 double 值本身最多有 15 位小数,因此将其转换为 Decimal 将产生具有 15 位有效数字的 Decimal 值。
关于c# - 为什么 Convert.ToDecimal(Double) 四舍五入到 15 位有效数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20495306/