blueprism - Blueprism 舍入问题
问题描述
我的价值为 1850.50 欧元。我想要计算将其四舍五入为 1851 欧元 我的公式是
ToNumber(Round(Replace([Item Data.LHC Part Anaes Rate 2019 (No Rounding)],"€","")))
目前,它正在带回 1850 欧元。似乎向下而不是向上舍入 0.5 的值?此问题仅在值为 0.50 时发生
解决方案
您看到这种奇怪行为的原因是 .NET(Blue Prism 所基于的框架)默认使用Banker's Rounding来执行舍入功能。从链接页面:
Bankers Rounding是一种将数量四舍五入为整数的算法,其中与两个最接近的整数等距的数字被四舍五入为最接近的偶数。因此,0.5 向下舍入为 0;1.5 轮到 2。
因此,在典型计算阶段利用舍入功能时,将舍入0.5
为0
.
为了应对这种舍入实现,您可以使用以下两种方法之一:
方法 #1 -将 0.5 作为单独的情况进行处理
使用决策阶段来确定您尝试四舍五入的数字最后是否有十分之五。如果是,
.5
请添加另一个“四舍五入”。如果有任何其他十进制数,请照常进行四舍五入。方法 #2 -自定义舍入实现
使用将您的号码作为输入的操作创建一个新的自定义对象。编写一个代码阶段以实现您认为合适的舍入。这个 SO question body有一些很好的代码,你可以开始。
推荐阅读
- c# - 无法更新 HubSpot 中的时间戳属性
- python - 这个错误是什么意思,我不明白 '[1006/094704.464:INFO:CONSOLE(1)] "ERROR [object Object]"
- clojure - 列表中的唯一元素
- api - 进度指示器的状态没有变化
- c++ - 转换编码
- jwt - 无法理解 JWT 如何与 RSA 一起使用(中间人攻击?)
- html - 在圆角的网站上使用 SVG 图像 - 圆角区域显示为白色
- php - 如何在 cpanel 中安装/启用 php-exif
- excel - 在不同的工作簿中运行特定的宏
- google-cloud-monitoring - 删除并重新安装/更新 stackdriver-agent