Java 具有舍入值的大十进制转换

Java 具有舍入值的大十进制转换,java,bigdecimal,Java,Bigdecimal,我有一个双重值,例如 Double doubleValue=0.0001; 尝试打印时,我得到了一个输出,即1.0E-4 所以我试着用BigDecimal来表示这个值 BigDecimal.valueOf(doubleValue)最终输出为“0.00010” 有人能告诉我如何将舍入值设置为“0.0001”(1之后没有0的结束轨迹)您可以尝试以下类似的代码 Double doubleValue=0.0001; DecimalFormat f = new DecimalFormat("##

我有一个双重值,例如

Double doubleValue=0.0001;
尝试打印时,我得到了一个输出,即
1.0E-4

所以我试着用BigDecimal来表示这个值

BigDecimal.valueOf(doubleValue)
最终输出为“0.00010”


有人能告诉我如何将舍入值设置为“0.0001”(1之后没有0的结束轨迹)

您可以尝试以下类似的代码

Double doubleValue=0.0001;    
DecimalFormat f = new DecimalFormat("##.0000");
String formattedValue = f.format(doubleValue);
BigDecimal bigDecimalValue = new BigDecimal(formattedValue);
bigDecimalValue.stripTrailingZeros();

希望这有帮助

您是否使用println打印?您应该使用printf格式化输出

        Double d = 0.000100;
        System.out.printf("%.4f",d);    
下面将打印“0.0001”


希望这有帮助

对于0.0001,其可能的重复项舍入为0,但如果输入为0.01,则将输出返回为0。0100@Kumar是的,那是真的。我以为你想保留到小数点后4位Sam sry因为没有说清楚。。。。我需要的精度最大为4。。值没有0结尾。@Kumar你试过我更新的答案了吗?它应该完成这项工作——最大精度为4,值的末端轨迹为0