Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.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 如何在具有4位小数的函数中返回双数据类型?_Java_Function_Double_Decimal - Fatal编程技术网

Java 如何在具有4位小数的函数中返回双数据类型?

Java 如何在具有4位小数的函数中返回双数据类型?,java,function,double,decimal,Java,Function,Double,Decimal,在java中,如何在函数中返回4位小数的双数据类型 public static double fun(){ double d=2.5d; String s=String.format("%.4f",d); double ans=Double.parseDouble(s); return(ans); } 实际输出=2.5 预期输出=2.5000如果您使用double进行数学计算,则使用2.5相当于2.5000。你能更具体地说明你为什么想

在java中,如何在函数中返回4位小数的双数据类型

    public static double fun(){
    double d=2.5d;
    String s=String.format("%.4f",d);
    double ans=Double.parseDouble(s);
    return(ans); }
实际输出=2.5

预期输出=2.5000

如果您使用double进行数学计算,则使用
2.5
相当于
2.5000
。你能更具体地说明你为什么想要后者吗


如果确实需要小数点后4位,我假设这是某种输出格式任务,在这种情况下,您可以直接返回字符串表示。

您不能调整双精度值本身的精度,而可以为值的字符串表示的输出格式设置精度。干杯。为什么不返回双精度,然后处理到小数点后4点?否则,您可以返回一个在小数点后有4位字符的字符串。如果您想要有一个特定的表示形式,那么您就不能再使用double,因为double有一个特定的值,它不关心如何显示它。唯一的选择是返回double的
字符串
表示形式。只需
返回s
。这是否回答了您的问题?您也可以将其返回为
int
乘以
10000
(将小数点向右移动4位):
return(int)Math.round(d*10000)谢谢你的建议。嗯,这是我在考试中遇到的问题。问题是函数返回数据类型是双精度的,并且需要给出最多4位小数。我认为这里的关键词是“最多”。所以他们可能意味着最多有4位小数。因此,任何精度大于4的值都将四舍五入到小数点后4位。任何小于4的都将保持原样。下面是一种将其四舍五入到4位小数的方法
BigDecimal bd=new BigDecimal(String.valueOf(doubleVal)).setScale(4,BigDecimal.round_-UP);返回bd.doubleValue()
您也可以这样做->
(double)Math.round(doubleVal*10000d)/10000d
,但第二个选项可能会产生舍入错误,因此我建议使用第一个选项。