我试图“截断” 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/