Double.Parse 精度/舍入问题

3

我在数据库中有一个数据类型为 decimal(24,10) 的列。

假设我有一个值:

string d1 = "123.6666666666";

Double.Parse(d1) 

数据列中的输出:123.6666666700

我使用了Convert.ToDecimal(d1),其输出为123.6666666666

期望输出:123.7000000000


可能是 double.parse 返回精度差异 的重复问题。 - Magnetron
@Magnetron,请现在检查问题。 - Mukund
1
Math.Round(Convert.ToDecimal(d1), 1) - Cato
1个回答

4

您得到的输出是由于双精度和十进制值的精度。您实际想要的是将数字四舍五入到1个小数位,为此,您必须使用Math.Round,根据您的需求选择双精度或十进制,像这样:

Math.Round(Double.Parse(d1),1)

或者,如果您需要
Math.Round(Convert.ToDecimal(d1),1)

如果您需要了解更多关于Math.Round的信息,请查看MSDN链接:https://msdn.microsoft.com/pt-br/library/75ks3aby(v=vs.110).aspx


double和decimal的精度是多少? - Mukund
@Mukund double:15-16位数字;decimal:28-29个有效数字。如果您想保留完整的值并仅显示1个数字,可以使用.ToString("0.#")。https://msdn.microsoft.com/pt-br/library/678hzkk9.aspx https://msdn.microsoft.com/library/364x0z75.aspx - Magnetron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接