java - roundToDecimals 返回太多数字

标签 java floating-point floating-point-precision

我有一个返回 float 的进程。然后我使用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/

相关文章:

java - 如何在 Linux 中终止和停止在应用程序外运行的 TimerTask

处理器的代码解释和十进制比较

c - strtof = strtod 后跟 cast?

c++ - 将 double 值舍入为(稍微)较低精度的好方法是什么?

c - C 中不一致的求和

c++ - float 末尾的点是否表示缺乏精度?

java - 如何更改 JButton 的位置

java - Parcelable 协议(protocol)需要一个名为 CREATOR 的 Parcelable.Creator 对象(我确实有 CREATOR)

java - 格式化包含许多字符串和整数的长 system.out.print

c++ - C/C++ 浮点问题