我正在尝试“截断”双精度型,以仅返回两个小数位。
例:
给定的1375568.13124765
将返回=> 1375568.13
使用十进制格式太慢。我在一个循环中多次调用它。为了加快这一过程,我正在尝试:
public static double castRoundTo2(double d)
{
return (long) (d * 100 + 0.5) / 100.0;
}
这将返回类似
1375568.13000015
的内容小数点后两位有什么舍不得的吗?
这是用于数值计算。
最佳答案
小数点后两位有什么舍不得的吗?
那就是它的作用。
我会检查你的考试
public static void main(String[] args) {
System.out.println(castRoundTo2(1375568.13000015));
System.out.println(castRoundTo2(1375568.13124765));
System.out.println(round2(-1375568.13000015));
System.out.println(round2(-1375568.13124765));
}
public static double castRoundTo2(double d) {
return (long) (d * 100 + 0.5) / 100.0;
}
public static double round2(double d) {
return roundToFactor(d, 100);
}
public static double roundToFactor(double d, double f) {
return Math.round(d * f) / f;
}
版画
1375568.13
1375568.13
-1375568.13
-1375568.13
注意:castRoundTo2会四舍五入为正无穷大。 Math.round,从零开始舍入。
如果您想要一种简单的方法可以做