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

roundToDecimals(weight,3)


---- 2012年6月22日更新:上午1.42 ----

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


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

最佳答案

考虑您的0.333情况。没有二进制浮点(doublefloat)表示正好是0.333。只有“最接近0.333的值”,这是您使用时会得到的

double d = 0.333;


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

关于java - roundToDecimals返回太多数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11144614/

10-10 20:09