如何使用 DecimalFormat 方法更改小数点前数字的大小
Posted
技术标签:
【中文标题】如何使用 DecimalFormat 方法更改小数点前数字的大小【英文标题】:how to change the size of a number before the decimal point with DecimalFormat method 【发布时间】:2013-07-16 06:57:13 【问题描述】:如何限制整数本身的位数而不仅仅是小数点后的小数部分?
例如使用数字 54321.12574857f 和 DecimalFormat("##0.##");它应该返回 543.12 或 321.12,小数点后两位是正确的,但是我想将小数点前的数字减少到只有 3。这是怎么做的?
在输入数字 54321.12574857 后,我使用 ##0.## 的 DecimalFormat 方法的参数,我期待 543.12,或者 321.12 而不是我得到的 54321.12
DecimalFormat 方法更改的唯一数字是小数点后的数字
float inputNumber = 54321.12574857f;
DecimalFormat decimalFormat = new DecimalFormat("##0.##");
String newNumber = String.valueOf(decimalFormat.format(inputNumber));
System.out.println(newNumber);
【问题讨论】:
您不使用%
的任何特殊原因?
你能举出使用 % 的 String.format 的例子吗?当您提到 % 时,我假设您正在谈论 String.format 方法
不.. 我的意思是使用mod
运算符。
既然你说“我期待 543.12,或者 321.12”,你可以这样做decimalFormat.format(inputNumber % 1000)
【参考方案1】:
试试这样的,
DecimalFormat decimalFormat = new DecimalFormat("##0.##");
String newNumber = String.valueOf(decimalFormat.format(inputNumber/100));
【讨论】:
这会起作用,唯一的问题是必须制定一种方法来将数字除以过大的位数。例如,现在它是 2 以上,所以你将除以 100 和 3 除以 1000,那么我需要一个 if else 的 switch 语句来继续检查有多少。 @Kevik 否则您可能无法通过这种方式删除前导数字。以上是关于如何使用 DecimalFormat 方法更改小数点前数字的大小的主要内容,如果未能解决你的问题,请参考以下文章