在收银台输入的付款金额必须始终四舍五入到小数点后的第二位,因为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.05
或1.55
向上取整为1.60
。