java - 用 .00 获得双倍

标签 java double

我有一个 String 值;并且我需要将它作为 Double 类型始终保留 2 位小数;所以,如果我得到 500,我需要将它转换为 500.00,因为它始终是 double 值。

我的问题是当我有类似xxx.00xxx.x0 的东西时,parseDouble 方法会删除第二个 0。

我的代码是这样的

String number = "500.00";
Double numberToSave = (Double.ParseDouble(number));

numberToSave 返回 500.0

关于如何解决这个问题的任何想法?我需要显示第二位小数,即使它是 0

谢谢。

最佳答案

Double 没有任何维护无意义数字的概念。

问题不在于您使用的 Double(或 double)值 - 而是您如何将它返回字符串。你应该使用 DecimalFormat指定适当的小数位数。

另请注意,您当前正在使用返回 doubleDouble.parseDouble,但您将其分配给 Double 变量,这将装箱值 - 可能是不必要的。

示例代码:

import java.text.DecimalFormat;

public class Test {
    public static void main(String[] args) {
        String text = "500.00";
        double number = Double.parseDouble(text);

        DecimalFormat format = new DecimalFormat("0.00");
        String formatted = format.format(number);
        System.out.println(formatted);
    }
}

请注意,即使有更多 位可用,上述代码也会为您提供两位小数。

此外,如果精确的小数位对您很重要,您可能需要考虑使用 BigDecimal 而不是 double。如果您的值实际上代表货币,这一点尤其重要。您应该了解 float 二进制点类型(例如double)和 float decimal点类型(例如BigDecimal)之间的区别) 并在它们之间进行适当的选择。

关于java - 用 .00 获得双倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17277744/

相关文章:

JAVA给字符串的每个字符一个数值

java - 在 Java 中单击时尝试删除屏幕上的对象不起作用

java - 只有加密图像应保存在文件中并解密图像以供预览

java - 将映射映射到包含名称和值参数的对象列表

java - 每次超过一定数量时如何返回未更改的变量?

optimization - 避免 float 到 Common Lisp 中的指针强制转换

java - 用Java(不是html)解析网页中的文本

c++ - 从给定的符号、尾数和指数构造 float ( double )的宏或函数?

java - 如何从 try、catch 和 finally 中返回一个值?

c++ - c++ 中 long double 中小数点后允许的最大位数