直接使用样式
/**
* 直接使用样式
* '#' 表示数字, 会抹掉头尾和尾部的零
* '0' 表示数字, 会补零
*/
public static void applyPattern() {
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
// 1.设置千分位分隔符
// 2.最少保留两位小数, 不足补零
// 3.最多也保留两位小数, 四舍六入五成双
// 4.小数点左边至少有零
// #1.默认
// f.setMinimumFractionDigits(2); // #2
// f.setMaximumFractionDigits(2); // #3
// #4.默认
((DecimalFormat) f).applyPattern("#,##0.00");
}
System.out.println(f.format(new BigDecimal("123")));
System.out.println(f.format(new BigDecimal("1234567890.1234567890"))); // 1,234,567,890.12
System.out.println(f.format(new BigDecimal("11.145"))); // 11.14
System.out.println(f.format(new BigDecimal("11.155"))); // 11.16
System.out.println(f.format(new BigDecimal("0.155"))); // 0.16
if (f instanceof DecimalFormat) {
// 同上,前缀加了一个 $
// ((DecimalFormat) f).setPositivePrefix("$");
// ((DecimalFormat) f).setNegativePrefix("$");
((DecimalFormat) f).applyPattern("$#,##0.00");
}
System.out.println(f.format(new BigDecimal("0.155"))); // $0.16
System.out.println(f.format(new BigDecimal("-0.155"))); // -$0.16
System.out.println("-------------------------------");
if (f instanceof DecimalFormat) {
((DecimalFormat) f).applyPattern("0.###E0"); // 科学计数法
System.out.println(f.format(new BigDecimal(1)));
System.out.println(f.format(new BigDecimal(10)));
}
}
最少保留几位小数
/**
* 最少保留几位小数
*/
private static void keepMinFraction() {
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
f.setMinimumFractionDigits(4); // 最少保留4位小数,不足补零
}
System.out.println(f.format(12.12)); // 12.1200
}
最多保留几位小数
private static void keepMaxFraction() {
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
f.setMaximumFractionDigits(4); // 最多保留4位小数,多余小数默认 HALF_EVEN(指向最近的邻居,如果一样近,指向最近的偶数)
}
System.out.println(f.format(12.12345)); // 12.1235
System.out.println(f.format(12.12344)); // 12.1234
}
限定最多保留几位小数时, 多余尾数处理方式
/**
* 限定最多保留几位小数时, 多余尾数处理方式
*
* HALF_EVEN(四舍六入五成双)
* 如果要舍弃的部分 小于 0.5,则直接舍去(向下舍入)。
* 如果要舍弃的部分 大于 0.5,则进位(向上舍入)。
* 如果要舍弃的部分 等于 0.5,则看前一位数字:
* 如果前一位是 偶数,则舍去(向下舍入)。
* 如果前一位是 奇数,则进位(向上舍入)。
*/
private static void keepMaxFractionWithRoundingMode() {
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
System.out.println(f.getRoundingMode()); // 默认 HALF_EVEN, HALF_EVEN(四舍六入五成双)
f.setMaximumFractionDigits(0); // 最多保留 0 位小数,多余小数默认 HALF_EVEN(四舍六入五成双)
}
System.out.println(f.format(4.5)); // 4
System.out.println(f.format(5.5)); // 6
f.setMaximumFractionDigits(1); // 最多保留 1 位小数,多余小数默认 HALF_EVEN(四舍六入五成双)
System.out.println(f.format(11.45)); // 11.4
System.out.println(f.format(11.55)); // 11.6
f.setMaximumFractionDigits(2); // 最多保留 2 位小数,多余小数默认 HALF_EVEN(四舍六入五成双)
System.out.println(f.format(11.244)); // 11.24
System.out.println(f.format(11.246)); // 11.25
System.out.println(f.format(11.245)); // 11.24
System.out.println(f.format(11.255)); // 11.26
System.out.println("----------------------------------------");
// 切换成四舍五入
if (f instanceof DecimalFormat) {
f.setRoundingMode(RoundingMode.HALF_UP);
f.setMaximumFractionDigits(0);
}
System.out.println(f.format(4.5)); // 5
System.out.println(f.format(5.5)); // 6
f.setMaximumFractionDigits(1);
System.out.println(f.format(new BigDecimal("11.45"))); // 11.5
System.out.println(f.format(11.55)); // 11.6
f.setMaximumFractionDigits(2);
System.out.println(f.format(11.244)); // 11.24
System.out.println(f.format(11.246)); // 11.25
System.out.println(f.format(new BigDecimal("11.245"))); // 11.25
System.out.println(f.format(11.255)); // 11.26
System.out.println("----------------------------------------");
BigDecimal a0 = new BigDecimal("4.5");
a0= a0.setScale(0, RoundingMode.HALF_UP);
System.out.println(a0); // 5
BigDecimal b0 = new BigDecimal("5.5");
b0 = b0.setScale(0, RoundingMode.HALF_UP);
System.out.println(b0); // 6
BigDecimal a1 = new BigDecimal("11.45");
a1 = a1.setScale(1, RoundingMode.HALF_UP);
System.out.println(a1); // 11.5
BigDecimal b1 = new BigDecimal("11.55");
b1 = b1.setScale(1, RoundingMode.HALF_UP);
System.out.println(b1); // 11.6
BigDecimal a2 = new BigDecimal("11.244");
a2 = a2.setScale(2, RoundingMode.HALF_UP);
System.out.println(a2); // 11.24
BigDecimal b2 = new BigDecimal("11.246");
b2 = b2.setScale(2, RoundingMode.HALF_UP);
System.out.println(b2); // 11.25
BigDecimal c2 = new BigDecimal("11.245");
c2 = c2.setScale(2, RoundingMode.HALF_UP);
System.out.println(c2); // 11.25
BigDecimal d2 = new BigDecimal("11.255");
d2 = d2.setScale(2, RoundingMode.HALF_UP);
System.out.println(d2); // 11.26
}
最少保留几位整数
/**
* 最少保留几位整数
*/
private static void keepMinInteger() {
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
f.setMinimumIntegerDigits(4); // 最少保留4位整数,不足补零
}
System.out.println(f.format(12.12)); // 0,012.12
}
最多保留几位整数
/**
* 最多保留几位整数
*/
private static void keepMaxInteger() {
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
f.setMaximumIntegerDigits(4); // 最多保留4位整数,多余整数默认高位直接舍去
}
System.out.println(f.format(12345.12345)); // 2,345.123
}
分组
/**
* 分组
* 默认开启, 整数部分每隔3个数字加一个逗号
*/
private static void group() {
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
System.out.println(((DecimalFormat) f).getGroupingSize()); // 3, 默认整数部分 3 个数字一组
}
System.out.println(f.format(123456789.12345)); // 123,456,789.123
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setGroupingUsed(false); // 默认开启, 可手工关掉
System.out.println(f.format(123456789.12345)); // 123,456,789.123
}
}
正数前缀
/**
* 正数前缀
*/
private static void keepPositivePrefix() {
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setPositivePrefix("Plus"); // 正数前缀
}
System.out.println(f.format(-12.12)); // -12.12
System.out.println(f.format(12.12)); // Plus12.12
}
负数前缀
/**
* 负数前缀
*/
private static void keepNegativePrefix() {
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setNegativePrefix("Minus"); // 负数前缀
}
System.out.println(f.format(-12.12)); // Minus12.12
System.out.println(f.format(12.12)); // 12.12
}
正数后缀
/**
* 正数后缀
*/
private static void keepPositiveSuffix() {
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setPositiveSuffix("Plus"); // 正数后缀
}
System.out.println(f.format(-12.12)); // -12.12
System.out.println(f.format(12.12)); // 12.12Plus
}
负数后缀
/**
* 负数后缀
*/
private static void keepNegativeSuffix() {
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setNegativeSuffix("Minus"); // 负数后缀
}
System.out.println(f.format(-12.12)); // -12.12Minus
System.out.println(f.format(12.12)); // 12.12
}
百分比
/**
* 百分比
*/
private static void percent() {
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setMultiplier(100);
}
System.out.println(f.format(1.23)); // 123%
NumberFormat f1 = NumberFormat.getPercentInstance();
System.out.println(f1.format(2.34));
}
千分比
/**
* 千分比
*/
private static void keepThousand() {
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setMultiplier(1000);
((DecimalFormat) f).setPositiveSuffix("\u2030");
((DecimalFormat) f).setNegativeSuffix("\u2030");
}
System.out.println(f.format(0.12345)); // 123.45‰
System.out.println(f.format(-0.12345)); // -123.45‰
}
总是显示小数点
NumberFormat f = NumberFormat.getInstance();
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true); // 总是显示小数点
}
System.out.println(f.format(new BigDecimal("123"))); // 123.
System.out.println(f.format(new BigDecimal("0.12"))); // 0.12
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。