DecimalFormat的使用讲解数字格式化和demo(java小数控制,金额返回相关处理)

简介: DecimalFormat的使用讲解数字格式化和demo(java小数控制,金额返回相关处理)

在开发中经常要将数字进行格式化,比如取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
    }
}
相关文章
|
6月前
|
数据采集 Java
selenium+java入门demo
selenium+java入门demo
50 4
|
4月前
|
Java
MQTT(EMQX) - Java 调用 MQTT Demo 代码
MQTT(EMQX) - Java 调用 MQTT Demo 代码
195 0
MQTT(EMQX) - Java 调用 MQTT Demo 代码
|
5月前
|
Java
Java中将保留四位小数的Double转换为String的方法详解
选择合适的方法,可以使代码更加简洁、高效,同时也能满足不同场景下的需求。
90 5
|
7月前
|
存储 Java C语言
Java的缓冲区与格式化输出技术详解
Java的缓冲区与格式化输出技术详解
67 2
|
6月前
|
Java
Java的double值保留2位小数
【6月更文挑战第16天】Java的double值保留2位小数
253 0
|
6月前
|
Java
Java Swing 层次面板(JLayeredPanel) Demo
Java Swing 层次面板(JLayeredPanel) Demo
49 0
|
7月前
|
前端开发 Java Maven
java集成opencv(不踩坑),实现人脸检测小demo(含上传人像图片识别接口),windows,IDEA,Springboot
java集成opencv(不踩坑),实现人脸检测小demo(含上传人像图片识别接口),windows,IDEA,Springboot
1157 0
|
7月前
|
Go Java 算法
Java每日一练(20230404) 买卖股票时机3、分数到小数、出现一次的数字2
Java每日一练(20230404) 买卖股票时机3、分数到小数、出现一次的数字2
41 0
Java每日一练(20230404) 买卖股票时机3、分数到小数、出现一次的数字2
|
7月前
|
Java
DecimalFormat(Java中的应用——十进制数字格式化)
DecimalFormat(Java中的应用——十进制数字格式化)
213 0
|
7月前
|
Java Linux 调度
Java【付诸实践 03】Spring定时任务注解@Scheduled+@EnableAsync用法详解(简单说明+应用场景+demo源代码+执行过程分析)
Java【付诸实践 03】Spring定时任务注解@Scheduled+@EnableAsync用法详解(简单说明+应用场景+demo源代码+执行过程分析)
144 2