c# - 付款金额如何四舍五入到小数点后第二位
问题描述
在收银机输入的付款金额必须始终向下舍入到小数点后第二位,因为无法处理 5 美分硬币。
一个例子:1.55
应该导致1.50
and 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);
}
解决方案
这个怎么样:
Math.Round(result - 0.05m, 1, MidpointRounding.AwayFromZero);
通过减去 0.05,我们确保我们向下舍入,并通过使用MidpointRounding.AwayFromZero
我们确保,例如1.60 - 0.05
,或被1.55
向上舍入到1.60
。
推荐阅读
- python - 如何在球体上随机散布点
- sql - 根据SQL中已有的行在表中插入记录
- ios - MobileVLCKit 关闭 LFLiveKit 侧面的麦克风
- shell - Kubernetes worker pod 中的 Shell 脚本
- c# - Firefox 中的 Selenium 比 Chrome 慢得多
- batch-file - 如何在文件中获取相同的关键字
- localization - Pimcore 添加/编辑本地化和国际化的自定义语言 (i18n/l10n)
- joomla - 安装joomla时如何纠正语法错误意外'='?
- javascript - 如何将具有重复值的数组变异/分组为具有非唯一值数组的单个唯一行?
- javascript - 在没有任何相对路径的情况下,此导入如何工作?