c# - C#中不同情况下向上或向下小数舍入

标签 c# winforms decimal

<分区>

我使用 C# 为计费系统 编写了应用程序。

账单总额可以四舍五入,方便顾客支付给收银员。这取决于以美分结尾的最后一个值。我使用数据类型作为小数来进行计算。

当以美分 0.00, 0.01, 0.02 结尾时,它将向下舍入0.00

例子:

  • 10.00、10.01 或 10.02 向下舍入为 10.00
  • 10.10、10.11 或 10.12 四舍五入为 10.10

当以美分 0.03、0.04、0.05 结尾时,它将四舍五入0.05

例子:

  • 10.03、10.04 或 10.05 四舍五入到 10.05
  • 10.13、10.14 或 10.15 四舍五入为 10.15

当以分 0.05、0.06 或 0.07 结尾时,它将向下舍入0.05

例子:

  • 10.05、10.06 或 10.07 四舍五入为 10.05
  • 10.15、10.16 或 10.17 四舍五入为 10.15

当以美分结束时 0.08 或 0.09 ** 它会**四舍五入0.10

例子:

  • 10.08 或 10.09 四舍五入为 10.10
  • 10.18 或 10.19 四舍五入为 10.20

现在的问题是我无法使用Math.Round,因为答案不同,不符合系统要求。假设我的总帐单是 10.14,它将向下舍入到 10.10,但答案应该向上舍入到 10.15。

我希望有人能帮我解决这个问题。

最佳答案

我打算建议一种检查最后一位数字的扩展方法。但是,您只需乘以并确保使用正确的舍入类型就可以做到这一点。

你几乎可以从这个答案中得到它。

How do I round to the nearest 0.5?

关于c# - C#中不同情况下向上或向下小数舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15676393/

相关文章:

c# - 从正则表达式 C# 中的字符串替换空格 (x0020)

c# - PostSubmitter 的异步 CTP

c# - 如何同步两个 TextBox 控件的 Text 属性?

php - 0.699 x 100 = 69.89999999999999?

c++ - 如何向上/向下舍入浮点值的小数位? C++

c++ - 设置精度和文件

c# - 检查服务是否挂起的最佳方法

c# - 从DataGrid按钮获取CommandParameter

c# - MVC 5 : How Does Application_PostAuthenticateRequest() get called in Global. asax?

c# - 使用 ExitWindowsEx 时,注销有效,但关机和重新启动无效