java - 使用 BigDecimals 计算百分比

标签 java bigdecimal

我想计算我收到的 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 - 使用 BigDecimals 计算百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52491342/

相关文章:

Java : BigDecimal - Print the number has input

java - 在 java 中,我们可以通过使用 javap 反汇编程序来探索 java 类和方法。如何在 C++ 中做同样的事情?

java - 在 Hibernate 中获取 JDBC 结果集

java - 传递给 org.jboss.resteasy.spi.metadata.ResourceMethod 的错误参数

java - 为什么在 Java 中进行交易之前要与 BigDecimal.ONE 比较余额?

java - BigDecimal new 或 valueof 的后续

programming-languages - 哪些编程语言支持任意精度算术?

Java BigDecimal from String without decimal places 但 asume 最后两位数字为 decimal

java - 为什么可以从已经关闭的 ByteArrayOutputStream 中读取数据?

java - 为什么基础Spring项目使用Spring Boot(STS)?