Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅获取小数点后的两位数_Java_Double_Decimal - Fatal编程技术网

Java 仅获取小数点后的两位数

Java 仅获取小数点后的两位数,java,double,decimal,Java,Double,Decimal,我的源代码是: public static double roundDown(double d) { double value = Math.floor(d * 1e2) / 1e2; if(Double.toString(value).contains(".")) return value; else return Double.parseDouble(Double.toString(value)+".00"); } 当我通过37

我的源代码是:

public static double roundDown(double d) {

    double value = Math.floor(d * 1e2) / 1e2;

    if(Double.toString(value).contains("."))
        return value;
    else
        return Double.parseDouble(Double.toString(value)+".00");

}

当我通过37187.200000,则输出为37187.19,我希望它为37187.20

如果您想在小数点后显示两位数字,则只需进行四舍五入,如下所示:

public static String roundDown(double d) {
    DecimalFormat f = new DecimalFormat("0.00");
    return f.format(d);
}
但如果您想将37187.20存储在double类型的变量中,那么这是不可能的,因为double存储在二进制中。因此,保存尾随的零是没有意义的。这将删除不重要的零

public static double roundDown(double d) {
    DecimalFormat f = new DecimalFormat("0.00");
    return Double.parseDouble(f.format(d));
}
此错误的可能重复是由数字近似引起的