java中DecimalFormat四舍五入用法详解

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。它可以支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)这些内容的本地化。

下边先介绍下DecimalFormat的用法:

import java.text.*;
import java.util.*; 

public class DecimalFormatDemo {
 public static void main(String args[]) {
   DecimalFormat df1 = new DecimalFormat("###,###.0000");//使用系统默认的格式
   System.out.println(df1.format(111111123456.12)); 

   Locale.setDefault(Locale.US);
   DecimalFormat df2= new DecimalFormat("###,###.0000");//使用美国的格式
   System.out.println(df2.format(111111123456.12)); 

//----------------------------also use applypattern------------------------------// 

   DecimalFormat df3= new DecimalFormat();
   myformat3.applyPattern("##,###.000");
   System.out.println(df3.format(11112345.12345));
//-----------------控制指数输出-------------------------------------------------// 

   DecimalFormat df4= new DecimalFormat();
   myformat4.applyPattern("0.000E0000");
   System.out.println(df4.format(10000));
   System.out.println(df4.format(12345678.345));
//------------------百分数的输出-------------------------------------------// 

   DecimalFormat df5= null;
   try{
     df5= (DecimalFormat)NumberFormat.getPercentInstance();
   }catch(ClassCastException e){
   <span style="white-space:pre"> </span> System.err.println(e);
   }
   df5.applyPattern("00.0000%");
   System.out.println(df5.format(0.34567));
   System.out.println(df5.format(1.34567));
 }
}

(1)对于数据的四舍五入:

DecimalFormat 包含一组符号,对于各符号的含义解释如下:

0 一个数字

# 一个数字,不包括 0

. 小数的分隔符的占位符

, 分组分隔符的占位符

; 分隔格式。

- 缺省负数前缀。

% 乘以 100 和作为百分比显示

? 乘以 1000 和作为千进制货币符显示;用货币符号代替;如果双写,用国际货币符号代替。如果出现在一个模式中,用货币十进制分隔符代 替十进制分隔符。

X 前缀或后缀中使用的任何其它字符,用来引用前缀或后缀中的特殊字符。

例如:

DecimalFormat df1 = new DecimalFormat("###0.00") ; //保留两位小数,如果不足两位小数则自动补零
System.out.println(df1.format(124.367));
System.out.println(df1.format(124.3)); 

DecimalFormat df2 = new DecimalFormat("###0.##") ; //保留两位小数,不足两位则不补零
System.out.println(df2.format(124.6));
System.out.println(df2.format(124)); 

DecimalFormat df3 = new DecimalFormat("000.000"); //保留三位小数,哪里不足位则补零
System.out.println(df3.format(24)); 

DecimalFormat df = new DecimalFormat("0.000E0000"); //指数
System.out.println(df.format(1234.56)); 

DecimalFormat nf = (DecimalFormat)NumberFormat.getPercentInstance(); //百分数
System.out.println(nf.format(0.476354));
nf.applyPattern("00.00%") ;
System.out.println(nf.format(0.476354));

运行结果:

124.37
124.30
124.6
124
024.000
1.235E0003
48%
47.64%

(2)对于读取并解析包含格式化的数字的字符串?解析支持包含在NumberFormat中。例如:

import java.util.Locale;
import java.text.NumberFormat;
import java.text.ParseException;
public class DecimalFormat5 {
public static void main(String args[]) {
  // 本地格式
  NumberFormat nf1 = NumberFormat.getInstance();
  Object obj1 = null;
  // 基于格式的解析
  try {
   obj1 = nf1.parse("1234,56");
  }
  catch (ParseException e1) {
   System.err.println(e1);
  }
  System.out.println(obj1);
  // 德国格式
  NumberFormat nf2 =NumberFormat.getInstance(Locale.GERMAN);
  Object obj2 = null;
  // 基于格式的解析
  try {
    obj2 = nf2.parse("1234,56");
  }
  catch (ParseException e2) {
    System.err.println(e2);
  }
  System.out.println(obj2);
  }
}

运行结果:

123456  //美国运行;被认为字符串
1234.56 //德国运行;被认为一个小数 

(3)对于DecimalFormat和NumberFormat:

DecimalFormat是NumberFormat的一个子类,其实例被指定为特定的地区。因此,你可以使用NumberFormat.getInstance 指定一个地区,然后将结构强制转换为一个DecimalFormat对象。文档中提到这个技术可以在大多情况下适用,但是你需要用try/catch 块包围强制转换以防转换不能正常工作 (大概在非常不明显得情况下使用一个奇异的地区)。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • java.text.DecimalFormat用法详解
  • Java中DecimalFormat用法详解
  • java DecimalFormat常用方法详解
  • java 使用DecimalFormat进行数字的格式化实例详解
  • Android检测手机中存储卡及剩余空间大小的方法(基于Environment,StatFs及DecimalFormat)
  • Java把数字格式化为货币字符串实例代码
  • java 格式化输出数字的方法
  • DecimalFormat数字格式化用法详解
(0)

相关推荐

  • Java中DecimalFormat用法详解

    我们经常要将数字进行格式化,比如取2位小数,这是最常见的.Java 提供DecimalFormat类,帮你用最快的速度将数字格式化为你需要的样子.下面是一个例子: importjava.text.DecimalFormat; public class TestNumberFormat{ public static void main(String[]args){ doublepi=3.1415927; //圆周率 //取一位整数 System.out.println(newDecimalForm

  • java.text.DecimalFormat用法详解

    简要 DecimalFormat 的 pattern 都包含着 正负子 pattern ,例如 "#,##0.00;(#,##0.00)": /** * Created by Shuai on 2016/7/11. */ public class Main { public static void main(String[] args) { // 正值 BigDecimal bigDecimal = BigDecimal.valueOf(-12211151515151.541666);

  • Java把数字格式化为货币字符串实例代码

    数字可以标志货币.百分比.积分和电话号码等,就货币而言,在不同的国家会以不同的格式来定义,本实例将接收用户输入的数字,然后在控制台中输出其货币格式,其中使用了不同国家的货币格式. 思路如下:使用NumberFormat类的getCurrencyInstance()方法,通过不同的参数创建不同的对象,对该对象使用format()方法,方法参数即为用户输入的数字. 代码如下: 复制代码 代码如下: import java.text.NumberFormat;import java.util.Loca

  • java DecimalFormat常用方法详解

    DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字. package com.myk.hash; import java.text.DecimalFormat; public class App { public static void main( String[] args ) { //数字格式化,#和0都是占位符,#:当要格式化的数字位数不足时#会补空白:0:当要格式化的数字位数不足时会补0 DecimalFormat df1 = new Deci

  • DecimalFormat数字格式化用法详解

    DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字. DecimalFormat 包含一个模式 和一组符号 符号含义: 下列字符用在非本地化的模式中.已本地化的模式使用从此 formatter 的 DecimalFormatSymbols 对象中获得的相应字符,这些字符已失去其特殊状态.两种例外是货币符号和引号,不将其本地化. import java.text.DecimalFormat; public class TestDecimalFormat

  • java 格式化输出数字的方法

    主要使用的类:java.text.DecimalFormat 1.实例化对象,可以用如下两种方法: 复制代码 代码如下: DecimalFormat df=(DecimalFormat)NumberFormat.getInstance(); DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance(); 因为DecimalFormat继承自NumberFormat. 2.设定小数位数 系统默认小数位数为3,如: 复制代码 代码如下:

  • Android检测手机中存储卡及剩余空间大小的方法(基于Environment,StatFs及DecimalFormat)

    本文实例讲述了Android检测手机中存储卡及剩余空间大小的方法.分享给大家供大家参考,具体如下: Android中Environment可用来检测手机中是否安装有存储卡以及文件存储路径等.StatFs可以获取存储卡的空间大小以及剩余空间大小.DecimalFormat可以实现把数字划分为一定的格式. 具体程序如下: import java.io.File; import java.text.DecimalFormat; import android.app.Activity; import a

  • java 使用DecimalFormat进行数字的格式化实例详解

    java 使用DecimalFormat进行数字的格式化实例详解 简单实例: //获取DecimalFormat的方法DecimalFormat.getInstance(); public static void test1(DecimalFormat df) { //默认显示3位小数 double d = 1.5555555; System.out.println(df.format(d));//1.556 //设置小数点后最大位数为5 df.setMaximumFractionDigits(

  • java中DecimalFormat四舍五入用法详解

    DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字.它可以支持不同类型的数,包括整数 (123).定点数 (123.4).科学记数法表示的数 (1.23E4).百分数 (12%) 和金额 ($123)这些内容的本地化. 下边先介绍下DecimalFormat的用法: import java.text.*; import java.util.*; public class DecimalFormatDemo { public static void ma

  • Java中的MapStruct用法详解

    目录 1 MapStruct配置 2 原理&性能 2.1 实现原理 3 使用方法 3.1 转换器的检索 3.1.1 使用Mappers工厂获取 3.1.2 通过依赖注入的方式获取 3.2 简单映射 3.2.1 基本映射 3.2.2 多源参数映射 3.2.3 更新对象 3.3 数据类型转换 3.3.1 对于基础数据类型会进行自动隐式的转换 3.3.2 指定转换格式 3.3.3 属性为复杂对象的映射 3.3.4 自定义转换器 3.3.5 使用限定符限定使用转换方法 3.4 Map的映射 3.5 枚举

  • java 中 ChannelHandler的用法详解

    java 中 ChannelHandler的用法详解 前言: ChannelHandler处理一个I/O event或者拦截一个I/O操作,在它的ChannelPipeline中将其递交给相邻的下一个handler. 通过继承ChannelHandlerAdapter来代替 因为这个接口有许多的方法需要实现,你或许希望通过继承ChannelHandlerAdapter来代替. context对象 一个ChannelHandler和一个ChannelHandlerContext对象一起被提供.一个

  • Java中isAssignableFrom的用法详解

    class1.isAssignableFrom(class2) 判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口.如果是则返回 true:否则返回 false.如果该 Class 表示一个基本类型,且指定的 Class 参数正是该 Class 对象,则该方法返回 true:否则返回 false. 1. class2是不是class1的子类或者子接口 2. Object是所有类的父类 一个例子搞定: package com.auuz

  • java 中的instanceof用法详解及instanceof是什么意思(推荐)

    好,应大家的要求先给大家说下在JAVA程序中instanceof是什么意思 instanceof是Java的一个二元操作符,和==,>,<是同一类东东.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据. instanceof运算符用法 运算符是双目运算符,左面的操作元是一个对象实例,右面是一个类.当左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false 说明: (1).一个类的实例包括本

  • java中stringBuilder的用法详解

    String对象是不可改变的.每次使用System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类.例如,当在一个循环中将许多字符串连接在一起时,使用StringBuilder类可以提升性能. 通过用一个重载的构造函数方法初始化变量,可以创建StringBui

  • java中throws实例用法详解

    在程序出现异常时,会有一个抛出异常的throw出现,这里我们要跟今天所讲的throws区分开.throws的作用是声明抛出,在名称上也跟throw有所不同.下面我们就throws对策概念.语法.实例带来讲解,帮助大家找到声明抛出异常的方法,具体方法如下. 1.概念 如果方法声明的是Exception类型的异常或者是Checked Exception异常,要求方法的调用处必须做处理. (1)继续使用throws向上(方法的调用处)声明 (2)使用try-catch-finally进行处理 2.语法

  • java中DelayQueue实例用法详解

    在阻塞队里中,除了对元素进行增加和删除外,我们可以把元素的删除做一个延迟的处理,即使用DelayQueue的方法.这里的删除需要一定的时间才能生效,有点类似于过期处理的理念.下面我们就DelayQueue的概念.特点进行讲解,然后在代码示例中体会DelayQueue的使用. 1.概念 是一个带有延迟时间的无界阻塞队列.队列中的元素,只有等延时时间到了,才能取出来.此队列一般用于过期数据的删除,或任务调度.以下,模拟一下定长时间的数据删除. 2.特点 (1)无边界设计 (2)添加(put)不阻塞,

  • java中@SuppressWarnings注解用法详解

    SuppressWarnings注解是jse提供的注解.作用是屏蔽一些无关紧要的警告.使开发者能看到一些他们真正关心的警告.从而提高开发者的效率 简介: java.lang.SuppressWarnings是J2SE 5.0中标准的Annotation之一.可以标注在类.字段.方法.参数.构造方法,以及局部变量上.作用:告诉编译器忽略指定的警告,不用在编译完成后出现警告信息. 使用: @SuppressWarnings("") @SuppressWarnings({}) @Suppre

  • Java中instance的用法详解

    关于对象的实例化 大家想到的通常是直接new,除了这个,还有些单实例模式,层次间调用等等 getInstance的使用: * 在主函数开始时调用,返回一个实例化对象,此对象是static的,在内存中保留着它的引用,即内存中有一块区域专门用来存放静态方法和变量, * 可以直接使用,调用多次返回同一个对象. getInstance 和 new的区别: 大部分类都可以用new,new就是通过生产一个新的实例对象,或者在栈上声明一个对象,每部分的调用 *都是用的一个新的对象 getInstance在单例

随机推荐