首页 > 解决方案 > Blueprism 舍入问题

问题描述

我的价值为 1850.50 欧元。我想要计算将其四舍五入为 1851 欧元 我的公式是

ToNumber(Round(Replace([Item Data.LHC Part Anaes Rate 2019 (No Rounding)],"€",""))) 

目前,它正在带回 1850 欧元。似乎向下而不是向上舍入 0.5 的值?此问题仅在值为 0.50 时发生

标签: blueprism

解决方案


您看到这种奇怪行为的原因是 .NET(Blue Prism 所基于的框架)默认使用Banker's Rounding来执行舍入功能。从链接页面:

Bankers Rounding是一种将数量四舍五入为整数的算法,其中与两个最接近的整数等距的数字被四舍五入为最接近的偶数。因此,0.5 向下舍入为 0;1.5 轮到 2。

因此,在典型计算阶段利用舍入功能时,将舍入0.50.

为了应对这种舍入实现,您可以使用以下两种方法之一:

  • 方法 #1 -将 0.5 作为单独的情况进行处理

    使用决策阶段来确定您尝试四舍五入的数字最后是否有十分之五。如果是,.5请添加另一个“四舍五入”。如果有任何其他十进制数,请照常进行四舍五入。

  • 方法 #2 -自定义舍入实现

    使用将您的号码作为输入的操作创建一个新的自定义对象。编写一个代码阶段以实现您认为合适的舍入。这个 SO question body有一些很好的代码,你可以开始。


推荐阅读