Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.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 设置双精度到小数点后6位的格式_Java_Precision_Number Formatting - Fatal编程技术网

Java 设置双精度到小数点后6位的格式

Java 设置双精度到小数点后6位的格式,java,precision,number-formatting,Java,Precision,Number Formatting,我想在不舍入的情况下将双精度值设置为6位精度 格式设置为小数点后6位后的预期值 20790123833965.960938 我试过使用十进制格式 DecimalFormat formatter = new DecimalFormat("#0.000000"); System.out.println(formatter.format(hashValue) ); 我得到了这个 20790123833965.960000 正如在评论中所说,为了保持数字的精确性,您需要: 输出: 20

我想在不舍入的情况下将双精度值设置为6位精度

格式设置为小数点后6位后的预期值

20790123833965.960938
我试过使用十进制格式

   DecimalFormat formatter = new DecimalFormat("#0.000000");
   System.out.println(formatter.format(hashValue) );
我得到了这个

20790123833965.960000
正如在评论中所说,为了保持数字的精确性,您需要:

输出:

20790123833965.960938


使用此代码,它将工作

public class JavaFormatter {
    public static void main(String args[]) {
        BigDecimal hashValue = new BigDecimal("20790123833965.960938");     
        DecimalFormat formatter = new DecimalFormat("#.######");
        System.out.println(formatter.format(hashValue));
    }
}

结果是合理的,
double
只能提供15到16位十进制数字的精度。输入是什么?相关:要获得额外精度,请使用
BigDecimal
BigDecimal hashValue=new BigDecimal(“207901383965.960938123”)然后它将产生预期的输出。有任何答案有用吗?如果没有,请告诉ud你还缺少什么,我们仍然在这里帮助你。如果是,请记住接受最有用的。谢谢。
public class JavaFormatter {
    public static void main(String args[]) {
        BigDecimal hashValue = new BigDecimal("20790123833965.960938");     
        DecimalFormat formatter = new DecimalFormat("#.######");
        System.out.println(formatter.format(hashValue));
    }
}