如何将付款金额四舍五入到小数点后第二位



在收银台输入的付款金额必须始终四舍五入到小数点后的第二位,因为5美分硬币无法处理。

例如:1.55应该导致1.50而不是1.60,因此小数点后的第二位应该始终为0,而第一位不能四舍五入。我已经测试了所有可能的方法,但找不到一个合理的解决方案。有人知道一个简单的把戏吗?

decimal result;
if (decimal.TryParse(txtZahlungsbetrag.Text, out result))
{
//txtZahlungsbetrag.Text = Math.Round(result, 1).ToString("0.0#");
//txtZahlungsbetrag.Text = string.Format("{0:0.0}" + "0", result); 
txtZahlungsbetrag.Text = string.Format("{0:n1}" + "0", result);
}

这个怎么样:

Math.Round(result - 0.05m, 1, MidpointRounding.AwayFromZero);

通过减去0.05,我们确保向下取整,并且通过使用MidpointRounding.AwayFromZero,我们确保例如1.60 - 0.051.55向上取整为1.60

最新更新