【发布时间】:2017-04-02 03:51:23
【问题描述】:
我在 Stackoverflow 上看到了很多关于在双精度后隐藏 .0 的问题,但每个答案都说要使用 DecimalFormat 并使用 #.# 来隐藏它。除非这不是我想要的。
对于双精度不以.0 结尾的每一种可能性,我希望它们保持原样。除非它确实以.0 结尾,否则将其删除。换句话说,我希望始终保持精确,除非它以 .0 结尾。
例子:
0.0000000000000000042345470000230 -> 0.0000000000000000042345470000230
0.4395083451 -> 0.4395083451
46547453.00024235 -> 46547453.00024235
435.0 -> 435
有什么方法可以实现吗?
进一步的例子:
这个问题here有我所说的答案类型:
使用十进制格式
double answer = 5.0; DecimalFormat df = new DecimalFormat("###.#"); System.out.println(df.format(answer));
上面的###.# 意味着我将出现前3 个数字,一个句点,然后是它后面的第一个数字。不管我的值是多少,只有第一个小数会被格式化。
【问题讨论】:
-
为什么投反对票?这个问题没有任何题外话,因为它指的是编程。此外,没有“最小可验证示例”,因为我不知道如何编写代码。
-
这是格式问题,与特定数据类型无关。
-
@HovercraftFullOfEels 示例纯属示例。我提供的数字长度的愚蠢只是极端的例子,表明它们只是不以
.0结尾。我知道他们没有实际上按原样表示。 -
@frayment 你有点困惑,如果你想将双精度数作为整数来管理,那么你的方法是错误的。如果您将其用于计算,请继续使用浮点数。然后,如果您需要将其打印到报告/用户界面中,请使用一些很酷的类作为 DecimalFormat 对其进行格式化。
-
知道了,是时候开始使用BigDecimal了。
标签: java formatting double