我想在没有指数形式的Java中打印double值.
double dexp = 12345678;
System.out.println("dexp: "+dexp);
Run Code Online (Sandbox Code Playgroud)
它显示了这个E符号:1.2345678E7.
我希望它像这样打印: 12345678
防止这种情况的最佳方法是什么?
我正在对高十进制精度 BigDecimal 对象进行计算。
我正在使用需要双精度参数的第三方库。当我尝试将其转换为 double 时,我得到的是指数格式而不是小数格式的值。
Run Code Online (Sandbox Code Playgroud)BigDecimal 0.000035000000000 Double 3.5E-5
BigDecimal bd;
BigDecimal(0.0000349999999995631583260546904057264328002929687500);
bd= bd.setScale(15,BigDecimal.ROUND_CEILING);
Log.i("bd","bd "+bd.toPlainString());
Log.i("bd","double"+bd.doubleValue());
Run Code Online (Sandbox Code Playgroud)
我发现了多种方法可以将这个 3.5E-5 值转换为正确的十进制点数,但仅限于字符串格式。而我需要双倍的价值
能够在 String 对象中没有指数但不是双
DecimalFormat df = new DecimalFormat("#");
df.setMaximumFractionDigits(16);
String test=df.format(bd,doubleValue());
System.out.println("op2 "+test);
Double test1=Double.parseDouble(test);
System.out.println("op2 "+test1);
Run Code Online (Sandbox Code Playgroud)
输出 op2 .000035 op2 3.5E-5
自从几天以来,我一直在努力寻找解决方案,因为我无法控制需要值加倍的 3rd 方库
推荐链接
我的问题与这些链接不同,我不希望 double 作为没有指数的字符串,而我只希望它采用 double 格式。
编辑
如果传递的 double 值是指数格式,则基于 NDK 的库将进一步对此对象进行计算,这将导致更多的小数点和更大的指数值。所以,我想传递一个没有 E 的简单 double
我在Double值操作中遇到问题.
让我们来,
Double d = new Double(123456789987654321123456789d);
System.out.println(d);
Run Code Online (Sandbox Code Playgroud)
输出是:
1.2345678912345678E35
Run Code Online (Sandbox Code Playgroud)
但我想要,
123456789987654321123456789
Run Code Online (Sandbox Code Playgroud)
没有任何表示法的完整数字.
我已经尝试了所有的排列使用BigDecimal,BigInteger等等.
注意:我想填充JSON所以请不要仅仅建议一个print声明.
我已经读过了: