roundToDecimals返回太多数字

时间:2012-06-21 18:36:15

标签: java floating-point floating-point-precision

我有一个返回浮点数的进程。然后我使用roundToDecimals方法来消除一些数字。

roundToDecimals(weight,3)

---- 2012年6月22日更新:1.42 am ----

public static double roundToDecimals(double d, int c) {
int temp=(int)((d*Math.pow(10,c)));
return (((double)temp)/Math.pow(10,c));
}

---更新结束

效果很好但如果最后一位数为零,则返回小数点后的3位数以上 前

0.0020
0.0060
0.333
0.071

有谁知道如何处理这类问题?

2 个答案:

答案 0 :(得分:2)

考虑你的0.333案例。 没有二进制浮点(doublefloat)表示,正好 0.333。只有“最接近0.333的值”,如果您使用

,这就是你得到的
double d = 0.333;

(我假设您抱怨roundToDecimals方法的结果,我认为这是floatdouble。很难从您的问题中得知。)

答案 1 :(得分:0)

你的方法不可行。您不能将浮点值舍入到特定的小数位数,因为浮点值不会具有小数位。它有二进制位置。如果你想要小数位,你必须转换为十进制基数,例如通过DecimalFormatBigDecimal