我试图截断C#中的一系列双精度值。无论使用什么舍入方法,以下值都会失败。这个值导致这两种方法失败的问题是什么?为什么即使Math.Round
未能正确截断数字?可以使用什么方法来正确截断这些值?舍入到specfic数字失败,这个双精度值
值:
double value = 0.61740451388888251;
方法1:
return Math.Round(value, digits);
方法2:
double multiplier = Math.Pow(10, decimals)
return Math.Round(value * multiplier)/multiplier;
即使在VS观看无线失败ndow!
浮点类型不能代表所有可能的值,这意味着这大概是0.62尽可能最接近。 – 2014-12-05 19:45:59
为什么downvote?这是一个非常令人困惑的问题,绝不是初学者的问题。你不明白这个问题的前提吗? – 2014-12-05 19:46:54
@JordiVermeulen - 'double'肯定可以正确表示0.62。 – 2014-12-05 19:47:37