首页 > 解决方案 > 付款金额如何四舍五入到小数点后第二位

问题描述

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

一个例子:1.55应该导致1.50and not 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);
  }

标签: c#

解决方案


这个怎么样:

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

通过减去 0.05,我们确保我们向下舍入,并通过使用MidpointRounding.AwayFromZero我们确保,例如1.60 - 0.05,或被1.55向上舍入到1.60


推荐阅读