java - 如何防止 double 四舍五入到小数点后两位

标签 java

我正在尝试计算商品的百分比(9% 税)

double amount = 55.4;
double total = amount * 0.09;

System.out.printf ("%f \n", total);
System.out.printf ("%.2f \n", total);

返回

4.986000

4.99

如何让它返回 4.98?

谢谢!

最佳答案

使用 BigDecimal 而不是 double。

double 是 float ,它无法准确表示所有小数部分,因此您会遇到“舍入”问题。

BigDecimal 是任意精度的,因此不存在这个问题。

关于java - 如何防止 double 四舍五入到小数点后两位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59681234/

相关文章:

java - 将 JDBI 与不支持准备好的语句的 JDBC 驱动程序一起使用

java - 顺序方法?

java - 数据库更改通知应用程序

java - 搜索条件不起作用

java - 如何让一个类正确实现接口(interface)?

java - 我如何更新我的 codenameone 插件并交给最新的类(class)更新

Java:给定日期的迭代

java - 在方法内部使用 "this"(不适用于调用方法、构造函数或变量)

java - 在开发者之间同步 jboss 模块和 jbossdatahome

java - 将默认光标更改为繁忙光标无法按预期工作