java - 对于不带小数的 double 格式,在 2 位后截去小数

标签 java performance double rounding

我试图“截断” double 以仅返回两位小数。

示例:
给定 1375568.13124765 将返回 => 1375568.13

使用十进制格式太慢。我在循环中多次调用此函数。为了加快这个过程,我正在尝试:

public static double castRoundTo2(double d)
{
  return (long) (d * 100 + 0.5) / 100.0;
}

这会返回类似 1375568.13000015

有没有办法截掉小数点后两位?

这用于数值计算。

最佳答案

您希望通过这样做实现什么目标?如果您只想很好地显示十进制数字,可以这样做的一种方法是:

final double number = 45.212454664;
System.out.printf("%1.2f", number);

这将打印带有 2 位小数的数字。在本例中,输出为 45.21

编辑:如果您想要一种对数字进行舍入的通用方法,您可以执行以下操作:

    public static double round(final double number, final int precision){
    return Math.round(number * Math.pow(10, precision)) / Math.pow(10, precision);
}

关于java - 对于不带小数的 double 格式,在 2 位后截去小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237269/

相关文章:

java - 无法将 "1,000.00"字符串解析为数字

java - ActionListener - 如何调用它们并向它们发送值

mysql - ON 子句变量顺序 - 优化

c# - 从字典中复制对对象的引用还是直接从字典中访问它更快?

performance - Clojure 中的 Takeuchi 数字(性能)

c++从高精度 double 获取E?

git - 为什么 SaltStack pkg.installed 命令无法识别 CentOS 6.6 上已安装的软件包

java - 如何删除字符串值中的尾随零并删除小数点

java - 如何在Java中深度复制双向链表

java - 如何在不创建新文件的情况下更新文件