我试图在Java程序中格式化一些数字。这些数字将同时是双精度和整数。在处理double时,我只想保留两个小数点,但在处理整数时,我希望程序不影响它们。换句话说:
双重输入
14.0184849945
双打-输出
14.01
整数-输入
13
整数-输出
13 (not 13.00)
有没有办法在同一个DecimalFormat实例中实现这一点?到目前为止,我的代码如下:
DecimalFormat df = new DecimalFormat("#,###,##0.00");
DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.ENGLISH);
otherSymbols.setDecimalSeparator('.');
otherSymbols.setGroupingSeparator(',');
df.setDecimalFormatSymbols(otherSymbols);
你能不能把它包装成一个实用程序调用。例如
public class MyFormatter {
private static DecimalFormat df;
static {
df = new DecimalFormat("#,###,##0.00");
DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.ENGLISH);
otherSymbols.setDecimalSeparator('.');
otherSymbols.setGroupingSeparator(',');
df.setDecimalFormatSymbols(otherSymbols);
}
public static <T extends Number> String format(T number) {
if (Integer.isAssignableFrom(number.getClass())
return number.toString();
return df.format(number);
}
}
然后,您可以只做如下操作:MyFormatter.format(int)
等。
只需将minimumFractionDigits
设置为0即可。这样地:
public class Test {
public static void main(String[] args) {
System.out.println(format(14.0184849945)); // prints '14.01'
System.out.println(format(13)); // prints '13'
System.out.println(format(3.5)); // prints '3.5'
System.out.println(format(3.138136)); // prints '3.13'
}
public static String format(Number n) {
NumberFormat format = DecimalFormat.getInstance();
format.setRoundingMode(RoundingMode.FLOOR);
format.setMinimumFractionDigits(0);
format.setMaximumFractionDigits(2);
return format.format(n);
}
}
试图删除所有不是0-9和句号的字母和字符。我正在使用,但它也删除了十进制,我如何也保留十进制呢?
问题内容: 是否可以使用CSS格式化数字?即:小数位,小数点分隔符,千位分隔符等。 问题答案: 您可以使用。它也可以格式化为其他数字格式,例如拉丁文,阿拉伯文等。
问题内容: 我想知道是否有可能在Java中使用String.format方法给出一个在零之前的整数? 例如: 1将变为001 2将变为002 … 11将变为011 12将变为012 … 526将保留为526 … 目前,我尝试了以下代码: 不幸的是,它在数字之前带有3个空格。可以在数字前加零吗? 问题答案: 使用格式说明为整数。的装置,该数目将是零填充,如果它是少于三个(在这种情况下)位。 有关其他
问题内容: 这个问题很简单,但是我敢打赌,在这里询问可能比尝试理解有关以下文档的方法更直接: 观察值为“ 12,345”。 期望值为“ 12345”。 问题答案: 只需使用
我正在使用十六进制值,我需要保留值的符号。我想知道是否有人有一种创造性的方法来保留整数的符号,而不使用?由于大小限制,我无法使用<code>BigInteger 我有一串十六进制值,如下所示: 我没有正确理解故障吗?失败似乎是由于设置了符号位。
问题内容: 我正在尝试将双精度分隔为整数和小数部分 因此,例如,数字24.4应该分为24和4。 使用此方法可为我提供以下值: 我需要十进制的值为4。 如何解决这个问题? 问题答案: 你可以做一个String 。然后Integer 取回两个整数分量。