我有一个 String
值;并且我需要将它作为 Double
类型始终保留 2 位小数;所以,如果我得到 500
,我需要将它转换为 500.00
,因为它始终是 double 值。
我的问题是当我有类似xxx.00
或xxx.x0
的东西时,parseDouble 方法会删除第二个 0。
我的代码是这样的
String number = "500.00";
Double numberToSave = (Double.ParseDouble(number));
numberToSave
返回 500.0
关于如何解决这个问题的任何想法?我需要显示第二位小数,即使它是 0
。
谢谢。
最佳答案
Double
没有任何维护无意义数字的概念。
问题不在于您使用的 Double
(或 double
)值 - 而是您如何将它返回字符串。你应该使用 DecimalFormat
指定适当的小数位数。
另请注意,您当前正在使用返回 double
的 Double.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/