我有值
8443.64625
,并想将其四舍五入到小数点后四位。当我使用decimal.Round(8443.64625, 4, MidpointRounding.AwayFromZero)
时,它会给出值
8443.6463
。因此,由于5的缘故,它似乎是四舍五入的。我该怎么做才能使其返回值
8443.6462
。 我可以将其转换为字符串,然后在4dp之后截断,但是我觉得必须有一种更有效的方法?
答案 0 :(得分:0)
您可以使用它,它将正常工作,只需尝试一次即可。 它会给您您想要的结果。 那是8443.6462。
Math.Round(8443.64625, 4)
答案 1 :(得分:0)
有人建议使用decimal.Round(8443.64625, 4, MidpointRounding.ToEven)
,但该评论似乎已被删除。
MidpointRounding.ToEven
适用于我发布的方案,但是如果值是8443.64629,它将产生8443.6463。我需要它来截断而不四舍五入。
我遇到了这个答案,它似乎在4dp之后截断,没有四舍五入。
public static decimal TruncateValue(this decimal num, int significantDigits)
{
decimal y = (decimal)Math.Pow(10, significantDigits);
return Math.Truncate(num * y) / y;
}
答案 2 :(得分:0)
这有效
Z
答案 3 :(得分:0)
我不知道是否已经回答了这个问题,但是,您可以使用Truncate
。
这本身并不是“四舍五入”,但您会得到我认为想要的结果。
即:
double num = 8443.64625;
Math.Truncate(10000 * num) / 10000
返回
8443.6462