聊聊DecimalFormat的用法及各符号的意义

目录
  • DecimalFormat的用法及各符号的意义
  • 使用DecimalFormat时注意事项
    • 总结一下吧

DecimalFormat的用法及各符号的意义

符号 位置 本地化? 含义
0 数字 阿拉伯数字
# 数字字 阿拉伯数字,如果不存在则显示为空
. 数字 小数分隔符或货币小数分隔符
- 数字 减号
, 数字 分组分隔符
E 数字 分隔科学计数法中的尾数和指数。在前缀或后缀中无需加引号。
; 子模式边界 分隔正数和负数子模式
% 前缀或后缀 乘以 100 并显示为百分数
/u2030 前缀或后缀 乘以 1000 并显示为千分数
¤(/u00A4) 前缀或后缀 货币记号,由货币符号替换。如果两个同时出现,则用国际货币符号替换。如果出现在某个模式中,则使用货币小数分隔符,而不使用小数分隔符。
' 前缀或后缀 用于在前缀或或后缀中为特殊字符加引号,例如 "'#'#" 将 123 格式化为 "#123"。要创建单引号本身,请连续使用两个单引号:"# o''clock"。
DecimalFormat format = new DecimalFormat("###,####.000");
System.out.println(format.format(111111123456.1227222));  // 1111,1112,3456.123

Locale.setDefault(Locale.US);
DecimalFormat usFormat = new DecimalFormat("###,###.000");
System.out.println(usFormat.format(111111123456.1227222));  // 111,111,123,456.123

DecimalFormat addPattenFormat = new DecimalFormat();
addPattenFormat.applyPattern("##,###.000");
System.out.println(addPattenFormat.format(111111123456.1227)); // 111,111,123,456.123

DecimalFormat zhiFormat = new DecimalFormat();
zhiFormat.applyPattern("0.000E0000");
System.out.println(zhiFormat.format(10000));   // 1.000E0004
System.out.println(zhiFormat.format(12345678.345)); // 1.235E0007

DecimalFormat percentFormat = new DecimalFormat();
percentFormat.applyPattern("#0.000%");
System.out.println(percentFormat.format(0.3052222)); // 30.522%

使用DecimalFormat时注意事项

import java.text.DecimalFormat;
public class Format {
public static void main(String[] args) {
 double ss=12345.97468;
 double ss2=0.23;
 DecimalFormat ff=new DecimalFormat("#,###,###.######");  绿色区域为保留的小数位数(四舍五入)----但不会保                                                                                                     留末尾的0) --------------------整数的话就没有小数位

 DecimalFormat ff2=new DecimalFormat("#,###,###.0000"); //小数点后保留四位小数(保留末尾的0) //类似于                                                                                                              round()函数---四舍五入
 DecimalFormat ff3=new DecimalFormat("#,###,###.00000"); //小数点后保留五位小数(保留末尾的0)

 DecimalFormat ff4=new DecimalFormat("#,###,###0.0000"); //小数点后保留四位小数(保留末尾的0)
 DecimalFormat ff5=new DecimalFormat("#,###,###0.00000"); //小数点后保留五位小数(保留末尾的0)

 System.out.println("#,###,###.######: "+ff.format(ss));
 System.out.println("#,###,###.0000  : "+ff2.format(ss));  //类似于round()函数---四舍五入
 System.out.println("#,###,###.00000 : "+ff3.format(ss));
 System.out.println("---------------------------------------------------");
 System.out.println("f111#,###,###.######: "+ff.format(ss2));
 System.out.println("f222#,###,###.0000  : "+ff2.format(ss2));
 System.out.println("f333#,###,###.00000 : "+ff3.format(ss2));
 System.out.println("---------------------------------------------------");
 System.out.println("f111#,###,###.######: "+ff.format(ss2));
 System.out.println("f444#,###,###.0000  : "+ff4.format(ss2));
 System.out.println("f555#,###,###.00000 : "+ff5.format(ss2));
 System.out.println("---------------------------------------------------");
  System.out.println("sss#,###,###.0000  : "+ff4.format(ss));
  System.out.println("sss#,###,###.00000 : "+ff5.format(ss));
    }
}

结果:

#,###,###.######: 12,345.97468
#,###,###.0000 : 12,345.9747
#,###,###.00000 : 12,345.97468
---------------------------------------------------
f111#,###,###.######: 0.23
f222#,###,###.0000 : .2300 (有问题)
f333#,###,###.00000 : .23000 (有问题)
---------------------------------------------------
f111#,###,###.######: 0.23
f444#,###,###.0000 : 0.2300
f555#,###,###.00000 : 0.23000

---------------------------------------------------
sss#,###,###.0000 : 1,2345.9747 (有问题) ---千位符位置有问题
sss#,###,###.00000 : 1,2345.97468 (有问题) ---千位符位置有问题

总结一下吧

(1)double ss2=0.23;时使用:

DecimalFormat ff4=new DecimalFormat("#,###,###0.0000"); //小数点后保留四位小数(保留末尾的0)

(2)double ss=12345.97468;时使用:

DecimalFormat ff4=new DecimalFormat("#,###,###.0000"); //小数点后保留四位小数(保留末尾的0)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(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类十进制格式化

    java.text.DecimalFormat类十进制格式化的具体代码,供大家参考,具体内容如下 import java.text.DecimalFormat; class FormatDemo{ public void format1(String pattern,double value){ // 声明一个DecimalFormat对象 DecimalFormat df = new DecimalFormat(pattern); String str = df.format(value);

  • 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.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);

  • DecimalFormat多种用法详解

    NumberFormat.getInstance()方法返回NumberFormat的一个实例(实际上是NumberFormat具体的一个子类,例如DecimalFormat), 这适合根据本地设置格式化一个数字.你也可以使用非缺省的地区设置,例如德国.然后格式化方法根据特定的地区规则格式化数字.这个程序也可以使用一个简单的形式: NumberFormat.getInstance().format(1234.56) 但是保存一个格式然后重用更加有效.国际化是格式化数字时的一个大问题. 另一个是对

  • java格式化数字操作 NumberFormat及DecimalFormat

    目录 前言 正文 JavaAPI官方描述 NumberFormat DecimalFormat NumberFormat 获取NumberFormat实例 常用方法 使用示例 DecimalFormat 获取DecimalFormat实例 设置Pattern 子类特有的方法 使用示例 通用格式 获取百分比格式 货币格式 整数格式 前言 以前用到要对数字格式的地方,都是直接到网上搜一下.拿过来能用就行.因为平时用的不多.但是最近的项目对这个用的多了.网上拿来的不够用了.自己看了java源码把这方面

  • 聊聊DecimalFormat的用法及各符号的意义

    目录 DecimalFormat的用法及各符号的意义 使用DecimalFormat时注意事项 总结一下吧 DecimalFormat的用法及各符号的意义 符号 位置 本地化? 含义 0 数字 是 阿拉伯数字 # 数字字 是 阿拉伯数字,如果不存在则显示为空 . 数字 是 小数分隔符或货币小数分隔符 - 数字 是 减号 , 数字 是 分组分隔符 E 数字 是 分隔科学计数法中的尾数和指数.在前缀或后缀中无需加引号. ; 子模式边界 是 分隔正数和负数子模式 % 前缀或后缀 是 乘以 100 并显

  • Java数字格式类(NumberFormat类和DecimalFormat类)用法详解

    目录 Java数字格式类 NumberFormat类 1.基本介绍 2.使用案例 3.应用场景 DecimalFormat类 1.基本介绍 2.使用案例 总结 Java数字格式类 以下两个类可用于格式化和解析数字: java.text.NumberFormat java.text.DecimalFormat NumberFormat类 1.基本介绍 NumberFormat 类可以将一个数值格式化为符合某个国家地区习惯的数值字符串,也可以将符合某个国家地区习惯的数值字符串解析为对应的数值. Ja

  • 各种编程语言中$符号的意义

    0 前言 最近开发过程中使用了多种脚本语言,在这些语言中发现很多的$符号,而每种脚本语言的$符号的用法和意义均不相同,所以借博文总结总结.在linux应用开发中经常使用makefile脚本和shell脚本,有趣的是,这两种脚本使用$符号时存在明显差异,虽然在这两种脚本中$均和变量有关,但是makefile中变量使用括号包裹,而shell脚本缺并不需要括号. 1 shell脚本 定义变量 复制代码 代码如下: VAR=<value> 使用变量,变量名不需要使用括号包裹 复制代码 代码如下: $V

  • DecimalFormat数字格式化用法详解

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

  • C# 中 “$” 符号的作用以及用法详解

    前言:$是c# 6.0 的语言特性,功能类似string.format(),更方便的地方在于不要像format一样使用索引,可以直接使用变量.表达式或者方法的执行. 一.C#中$的作用 谈及这个$,其实它是C#6.0语法中模板字符串的一种写法,什么是模版字符串?还记得你们用过的格式化字符串吗?string.Format() 这个方法,是最常用的方法之一. 那$又是什么呢?它是为了替代string.format()的,原先赋值需要占位符和变量,当需要拼接多个变量会造成语句过长等不易理解问题. $是

  • Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)

    在Linux Shell中有很多的特殊符号,这对于我们写Shell脚本时要特别留意:一方面要知道这些特殊符号的用法,这些符号用好了可以达到事半功倍的效果:但另一方面要避免这些特殊符号的过度使用而导致脚本难以调试.难以阅读. 这些特殊符号罗列出来大致如下: 复制代码 代码如下: # ; ;; . , / / 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || &~ ~

随机推荐