java - 使用 BigDecimals 计算百分比
问题描述
我想计算我收到的 BigDecimal 格式的数字:
BigDecimal number1 = new BigDecimal("17");
int percentage = 50;
BigDecimal percentageAmount = number1.multiply(new BigDecimal(percentage/100));
但我得到了一个 0 !
解决方案
将除法结果转换为double
. 整数除法按预期返回零。这应该有效。
BigDecimal percentageAmount = number1.multiply(new BigDecimal((double)percentage/100));
或者,将 100 设为 100.0。
BigDecimal percentageAmount = number1.multiply(new BigDecimal(percentage/100.0));
如果您使用的数量很少,这些解决方案将起作用。但是当数字很大时,这些解决方案不会给出精确的结果。这将是避免精度误差的最佳方法:
BigDecimal percentageAmount = number1.multiply(BigDecimal.valueOf((double)percentage/100));
推荐阅读
- java - 如何每 x 秒更新一次文本视图?
- vue.js - vue + jest + typescript: Unexpected token = at class static function
- pine-script - 为什么我在使用 PineScript 时在 Tradingview 中得到不同的时间值
- r - 在 R 中执行大量 2 样本 t 检验
- swift - 我的应用迷恋 Unexpectedly found nil 同时隐式展开 Optional 值
- web-services - org.springframework.web.client.ResourceAccessException:I/O 错误:com.ibm.websphere.ssl.protocol.SSLSocketFactory
- postgresql - 将 Kubernetes Postgres pod 连接到存储在持久卷上的现有数据库
- java - 私有布尔值无法识别“if 语句”中的返回
- java - Spring-Hibernate 应用程序中的 Whitelabel 错误页面
- javascript - 如何在浏览器中使用表单标签和 javascript 加载本地保存的视频?