【发布时间】:2014-02-02 04:01:13
【问题描述】:
我正在尝试将双精度列表从字符串格式转换为双精度格式。我通过将它们放入列表并使用Double.parseDouble(string) 方法来做到这一点。
这适用于大多数数字,但当双精度包含尾随零时,parseDouble 方法正在删除它,它会提供不需要的输出。我不想删除它。
String[] values = {"124.50", "45.801", "-15.210"};
List<Double> nums = new ArrayList<Double>();
for(String s: values)
nums.add(Double.parseDouble(s));
Collections.sort(nums);
for(Double d: nums){
System.out.print(d + " ");
}
这会产生输出:
-15.21 45.801 124.5
但我想要尾随零。使用格式化行的问题是我必须在打印值时指定我想要的浮点精度,但我没有任何特别希望使数字准确到某个点,如果只留下零他们在那里。
我是不是搞错了?
【问题讨论】:
-
在谈到实际的双精度值时,没有“尾随零”之类的东西。
-
当,@BrianRoach 打败了我。您的问题有解决方案,但它们不是直截了当的@leigero。如果你希望输出总是有
n十进制数字,你可以使用DoubleFormat -
@leigero - 需要明确的是,这与询问如何使用整数(例如 01)保留“前导零”是一回事……您将数字的文本表示与实际二进制值
-
谢谢@BrianRoach 我将不得不从一个完全不同的角度来处理这项任务。你说的很有道理。
-
完整的答案需要一些时间,但它的要点涉及创建一个包含
double值和尾随零数量的包装类。也就是说......根据原始字符串,您可能仍会遇到精度问题。不过,根据您的操作,仅保留对原始字符串的引用可能会满足您的需求。 (编辑:哈,你去吧,有人发布了)
标签: java double number-formatting