Java 将字符串转换为double并在double中获取字符串的原始值

Java 将字符串转换为double并在double中获取字符串的原始值,java,string,double,Java,String,Double,我想将我的值从字符串转换为双精度: String mystring = "0.0100"; Double d = Double.parseDouble(mystring); 此字符串来自我的编辑文本 问题是我的输入字符串是0.0100,但当我将其转换为双倍时,它只会给我0.01 我怎样才能从double中获得原始字符串 根据示例,我需要所有的零。简单的答案是“你不能使用Double” “double”值以二进制形式存储。在106.4000中,尾随十进制零的概念在“双精度”值中毫无意义 你的问题

我想将我的值从字符串转换为双精度:

String mystring = "0.0100";
Double d = Double.parseDouble(mystring);
此字符串来自我的编辑文本

问题是我的输入字符串是0.0100,但当我将其转换为双倍时,它只会给我0.01

我怎样才能从double中获得原始字符串

根据示例,我需要所有的零。

简单的答案是“你不能使用Double”

“double”
值以二进制形式存储。在106.4000中,尾随十进制零的概念在“双精度”值中毫无意义

你的问题听起来像是
BigDecimal

 public static void main(String[] args) {
        String mystring = "0.0100";
        Double d = Double.parseDouble(mystring);
        System.out.println("Double : "+d);

        BigDecimal bigDecimal = new BigDecimal(mystring);
        System.out.println("BigDecimal : "+bigDecimal);
    }
输出

Double : 0.01
BigDecimal : 0.0100

使用以下代码,它可能会帮助您

String mystring = "0.0100";
Double d = new DecimalFormat("##.####").format(Double.parseDouble(mystring));

double存储浮点值。小数点后四位和右边0填充的概念是一个显示问题(即与值分开)。因此,将您的价值以某种方式格式化,例如

System.out.printf("%.4f, d");

改用BigDecimal

String mystring = "0.0100";
BigDecimal b =  BigDecimal(mystring);

System.out.println("Value b: "+b);//"0.0100"

这是不可能的,如果你把它存储到一个double中,你至少需要重新格式化它。。。如果需要将数字转换回字符串,请尝试使用字符串格式选项()@DaDaDom,我不想将数字转换回字符串。我只想字符串编号(作为原始字符串)!!!如果有5个0,比如0.0100000,可能会重复什么?我认为您的格式需要
“##.0000”
,以确保所有四位小数都显示出来。是的,但我告诉您1之后的零的数量不是固定的。@DegenSharew在这种情况下,双精度本身就可以工作,因为小数点后的数字末尾有一个零值。它没有任何价值。因此它没有被显示出来。如果小数部分的零后有数字,则会显示出来。