当前位置: 首页 > 面试题库 >

DecimalFormat和Double.valueOf()

祖波光
2023-03-14
问题内容

我试图摆脱我的double值的十进制分隔符之后不必要的符号。我这样做是这样的:

DecimalFormat format = new DecimalFormat("#.#####");
value = Double.valueOf(format.format(41251.50000000012343));

但是,当我运行此代码时,它会抛出:

java.lang.NumberFormatException: For input string: "41251,5"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
    at java.lang.Double.valueOf(Double.java:447)
    at ...

如我所见,在string这样的Double.valueOf()字符串上效果很好"11.1",但是在like这样的字符串上却令人窒息"11,1"。我该如何解决?有没有比这更优雅的方式

Double.valueOf(format.format(41251.50000000012343).replaceAll(",", "."));

有没有办法覆盖类的默认十进制分隔符值DecimalFormat?还有其他想法吗?


问题答案:

通过

在我的double值的十进制分隔符之后摆脱不必要的符号

您是说要舍入到小数点后5位吗?然后使用

value = Math.round(value*1e5)/1e5;

(当然,Math.floor(value*1e5)/1e5如果您确实希望截断其他数字,也可以)



 类似资料:
  • java.text.DecimalFormat类用于根据自定义格式和按区域设置格式化数字。 示例 - 格式编号 在这个例子中,我们根据给定的模式格式化数字。 IOTester.java import java.text.DecimalFormat; public class I18NTester { public static void main(String[] args) {

  • 使用DecimalFormatSymbols类,可以更改默认分隔符号,分组分隔符号等。 以下示例说明了相同的内容。 IOTester.java import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; public class I18NTester { public static void main(Stri

  • 默认情况下,DecimalFormat对象使用JVM的语言环境。 我们可以在使用NumberFormat类创建DecimalFormat对象时更改默认语言环境。 在下面的示例中,我们将对两个不同的区域设置使用相同的模式,您可以发现输出中的差异。 IOTester.java import java.text.DecimalFormat; import java.text.NumberFormat;

  • 问题内容: 这是小代码来说明我所看到的 打印: 我要打印 我需要做什么? 问题答案: 在使用之前添加以下行: 查看其他舍入模式,看看哪种最适合您。 注意:此方法仅在JDK 1.6或更高版本中有效

  • 问题内容: ,此模式的目的是什么?我相信这有两个目的 分组数字,即千位分隔符 如果缺少小数点,则在小数点后附加两个零,将23转换为23.00 但是为什么在小数点之前而不是小数点之前呢?这个零的目的是什么?谢谢您的帮助。 问题答案: 来自:http : //docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html 所以当没有数量未显

  • DecimalFormat类是NumberFormat的子类。DecimalFormat类属于java.text包。通过getXxxInstance方法获得的NumberFormat对象实例实际上就是DecimalFormat类的对象实例。由于DecimalFormat类不是抽象类,因此,可以直接创建DecimalFormat类的对象实例。下面的代码使用无参数的构造方法创建了DecimalForm