在开发中经常要将数字进行格式化,比如取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 } }