【发布时间】:2023-03-16 23:45:01
【问题描述】:
有没有办法使用String.format() 格式化双精度以仅获取小数?
System.out.println(String.format("%.2f", 1.23456d));
正如预期的那样,上面的行返回“1.23”,但在这种情况下,我只对“.23”感兴趣。 此外,我对小数点前的任何内容都不感兴趣,也没有前导 0。
这可以使用String.format() 还是我需要使用DecimalFormat?
干杯
【问题讨论】:
-
如果数字来自像 float 这样的原始数据类型,您可以执行 (myFloat - (int)myFloat)
-
你是对的。但这会留下前导 0 --> 0.23 如果可能的话,我还想用一个 String.format 表达式摆脱前导 0 ;)。将在几秒钟内更新上面的文字...
-
@darksaga 不幸的是没有。在点之后的格式公式中,您可以设置精度,但在点之前,您设置输出数据的最小宽度,对于浮点数不能设置为零(负值只会将输出调整到左侧,正值调整到右侧)。
-
把它变成一个字符串并使用 split("\\.") 得到小数部分怎么样?
-
@DeH 目前我正在使用以下表达式: String str = String.format("%.2f", 1.23456d);str = str.substring(str.length()-3) ;我认为如果可以直接使用 String.format 对其进行格式化,我可以摆脱子字符串,以使我的代码更有效;)
标签: java string format string-formatting string.format