vb.net - VB.net 舍入问题
问题描述
我正在使用下面的公式来尝试获得利率,但有时会出现一分钱的短缺
dim float as decimal = Math.ROUND((((Convert.ToDecimal(35000000.00) * Convert.ToDecimal(0.020625)) / 360) * 3), 2, MidpointRounding.AwayFromZero)
这等于 6015.62...如果我在计算器上进行数学运算,我会得到 6015.625,然后我想将其四舍五入到 6015.63...我该如何实现?
解决方案
这不是一个四舍五入的问题。您的公式返回 6015.6249999999999999999999999,而不是 6015.625。
35000000.00 * 0.020625 = 721875
721875 / 360 = 2005.208333333333
2005.208333333333 * 3 = 6015.624999999999
如果您将公式更改为
(35000000.00 * 0.020625) / (360 / 3)
然后你得到
35000000.00 * 0.020625 = 721875
360 / 3 = 120
721875 / 120 = 6015.625
即使你改变顺序,你也会得到你想要的。
35000000.00 * 0.020625 * 3 / 360
计算器有时会做一些花哨的事情。但是编译器一次只做一步,而不看之前做了什么。
推荐阅读
- clickhouse - 未找到 Clickhouse 数据源名称且没有默认驱动程序
- java - Spring Boot 2.0 未注册自定义执行器端点 Bean
- java - 如何使用“reduce”将此循环转换为函数表达式?
- vba - Excel 数据透视表宏导致“无效的过程调用或参数”错误
- r - 编写用户声明的函数时 [] 参数无效
- c# - WCF 一些用 OperationContract 装饰的方法没有向客户端显示(未公开)
- swift - 消息:“libc++abi.dylib:当我在 swift xcode 项目中按下按钮时,在我的控制台中以 NSException (lldb) 类型的未捕获异常终止
- video-streaming - 在线视频流的网络分析
- apache-spark - 如何阻止 Spark 结构化流每次都列出 S3 存储桶中的所有文件
- opencv - cv2.projectPoints 实际上是如何工作的?