【发布时间】:2017-09-03 07:59:28
【问题描述】:
我查看了许多与格式化数字相关的主题。 除了值 3.101 之外,它在大多数情况下都有效。 Float 和 Double 已与 ## 和 00 格式一起使用。
import java.text.DecimalFormat;
public class DecimalFormatTest {
public static void main(String[] args)
{
Float d1 = -3.1011f;
Double ds = -3.1011;
DecimalFormat df = new DecimalFormat("#.##");
System.out.println (Double.valueOf(df.format(d1)));
System.out.println (Double.valueOf(df.format(ds)));
DecimalFormat df2 = new DecimalFormat("#.00");
System.out.println (Double.valueOf(df2.format(d1)));
System.out.println (Double.valueOf(df2.format(ds)));
}
}
输出是:
-3.1
-3.1
-3.1
-3.1
预期输出:
-3.10
-3.10
-3.10
-3.10
如上所述,这适用于我测试过的所有其他数字。由于某种原因,这导致了一个问题。
关于是什么让这个数字如此不同以及获得第二个数字需要什么额外步骤有什么想法吗?
请记住,关键是我希望最终返回 Float 或 Double。
【问题讨论】:
-
我不太清楚你的问题是什么。
-
去掉
Double.valueOf位,效果会更好。 -
您正在正确格式化该值,但随后将其重新解析为双精度值(这将去除尾随的零)。
-
我删除了 Double.valueOf,它使用“#.00”格式工作,但我确实需要返回 Double 而不是字符串。