java - 有没有更好的方法将 Double 转换为其精确的十进制字符串?

标签 java string double decimal

我尝试了很多方法使用 String.format() 和 DecimalFormater 将 Double 转换为精确的十进制字符串,到目前为止我发现了这一点:

String s = "-.0000000000000017763568394002505";
Double d = Double.parseDouble(s) * 100;
System.out.println((new java.text.DecimalFormat("###########################.################################################################################")).format(d));

( https://ideone.com/WG6zeC )

我并不是很喜欢我的解决方案,因为制作一个无法涵盖所有​​情况的巨大模式对我来说很难看。

你还有其他方法吗?
我真的想要所有小数,没有科学记数法没有尾随零

谢谢

P.S.:我需要这个,不需要外部库,并且在 Java 1.7 中。

最佳答案

似乎您必须处理一些精度问题。 double 不适用于此用途。更好用BigDecimal

String value="13.23000";
BigDecimal bigD=new BigDecimal(value);
System.out.println(bigD);
System.out.println(bigD.stripTrailingZeros().toPlainString());

关于java - 有没有更好的方法将 Double 转换为其精确的十进制字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48804787/

相关文章:

java - Hibernate不将我的记录保存在数据库中,但主键会递增

java - Maven 无法更新到 selenium 2.44.0

java - 是否可以在自定义组件中使用 Camel 组件?

ruby-on-rails - 如何根据某些条件在 Ruby 中扩展字符串?

double - GLSL:平滑双输入

opengl - 图形硬件上的 float 与 double

java - 停止询问用户输入的循环

c++ - 如何在C++中使用字符串和字符串指针

python - 无法用\r 替换打印的行

c - 求解系数可能为0的二次方程