在开发中经常要将数字进行格式化,比如取2位小数,这是最常见的。Java 提供DecimalFormat类,帮你用最快的速度将数字格式化为你需要的样子。下面是一个例子: DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度。 0 表示如果位数不足则以 0 填充 # 表示只要有可能就把数字拉上这个位置。上面的例子包含了差不多所有的基本用法.
“#” 表示数字,如果不存在则显示为空; “0” 表示数字,如果不存在则显示为0; “.”小数分割符或货币小数分隔符。 “%”前缀或后缀显示为百分数
阿拉伯语和印度语数字的支持。它还支持不同类型的数,包括整数 (123)、定点数(123.4),科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以
public static void main(String[] args) {
double pi = 3.1415927;//圆周率
//取一位整数
//取一位整数
System.out.println(new DecimalFormat("0").format(pi));//3
//取一位整数和两位小数
System.out.println(new DecimalFormat("0.00").format(pi));//3.14
//取两位整数和三位小数,整数不足部分以0填补。
System.out.println(new DecimalFormat("00.000").format(pi));// 03.142
//取所有整数部分
System.out.println(new DecimalFormat("#").format(pi));//3
//以百分比方式计数,并取两位小数
System.out.println(new DecimalFormat("#.##%").format(pi));//314.16%
System.out.println("--------------------------------------------------------------");
long c = 299792458;//光速
//显示为科学计数法,并取五位小数
System.out.println(new DecimalFormat("#.#####E0").format(c));//2.99792E8
//显示为两位整数的科学计数法,并取四位小数
System.out.println(new DecimalFormat("00.####E0").format(c));//29.9792E7
//每三位以逗号进行分隔。
System.out.println(new DecimalFormat(",###").format(c));//299,792,458
//将格式嵌入文本
System.out.println(new DecimalFormat("光速大小为每秒,###米。").format(c));
}
public static void main(String[] args) {
double b;
b=100.45;
//保留一位小数,四舍五入
System.out.println(new DecimalFormat("0.0").format(b)); //100.5
//保留一位小数,四射无入
System.out.println(new DecimalFormat("#.#").format(b)); //100.5
b=11.0023;
//保留两位小数,四舍五入
System.out.println(new DecimalFormat("0.00").format(b)); //11.00
//保留两位小数,四射五入,但当末尾位0时,自动忽略
System.out.println(new DecimalFormat("#.##").format(b)); //11
b=20000.23456;
//格式化分隔数字
System.out.println(new DecimalFormat("#,##,###.####").format(b)); //20,000.2346
b=0.23365;
//按百分制输出,保留两位小数
System.out.println(new DecimalFormat("#.##%").format(b)); //23.36%
b=0.23366;
System.out.println(new DecimalFormat("#.##%").format(b)); //23.37%
b=123.455;
//将所有数字加上负号输出,保留两位小数
System.out.println(new DecimalFormat("-#.##").format(b)); //-123.45
b=-123.456;
System.out.println(new DecimalFormat("-#.##").format(b)); //--123.46
b=0.00235;
//按科学计数法输出,保留两位小数
System.out.println(new DecimalFormat("#.##E0").format(b)); //2.35E-3
b=0.00236;
System.out.println(new DecimalFormat("#.##E0").format(b)); //2.36E-3
}
扩展: DEMO:
描述 设计一个方法,将一个小于2147483647的double类型变量以截断取整方式转化为int类型
输入描述: 随机double类型变量 输出描述: 转化后的int类型变量
package com.example.类型转换;
import java.text.DecimalFormat;
import java.util.Scanner;
public class java_test {
//java 类型转换
// 设计一个方法,将一个小于2147483647的double类型变量以截断取整方式转化为int类型
public static void main(String[] args) {
System.out.println("请输入double类型的小数");
Scanner scanner = new Scanner(System.in);
double d = scanner.nextDouble();
System.out.println(java_test.typeConversion(d));
}
// 三种方式
private static int typeConversion(double d) {
DecimalFormat df = new DecimalFormat("#");//几个符合几位 . 小数点的位置 四舍五入
int s = Integer.parseInt(df.format(d));
System.out.println("math的返回之是"+Math.round(d));//四舍五入
return s;
// return (int) d;//强制返回int
}
}