舍入模式:

UP
向远离0的方向舍入
始终对非零舍弃部分前面的数字加 1。此舍入模式始终不会减少计算值的绝对值。
例如:1.6 → 2
      -1.6 → -2
      1.1 → 2
      -1.1 → -2

DOWN
向零方向舍入
此舍入模式始终不会增加计算值的绝对值。
例如:1.6 → 1
      -1.6 → -1
      1.1 → 1
      -1.1 → -1

CEILING
向正无穷方向舍入,此舍入模式始终不会减少计算值。
例如:1.6 → 2
      -1.6 → -1

FLOOR
向负无穷方向舍入,此舍入模式始终不会增加计算值。
例如:1.6 → 1
      -1.6 → -2

HALF_UP
向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入,此舍入模式就是通常学校里讲的四舍五入。
例如:1.6 → 2
      -1.6 → -2
      1.5 → 2
      -1.5 → -2

HALF_DOWN
向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入
例如:1.6 → 2
      -1.6 → -2
      1.4 → 1
      -1.4 → -1
      1.5 → 1
      -1.5 → -1

HALF_EVEN
向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
如果舍弃部分左边的数字为奇数,则舍入行为同 RoundingMode.HALF_UP ;如果为偶数,则舍入行为同 RoundingMode.HALF_DOWN
例如:1.6 → 2
      -1.6 → -2
      2.5 → 2
      -2.5 → -2
      5.5 → 6
      -5.5 → -6

UNNECESSARY
计算结果是精确的,不需要舍入模式

数字的格式化:

 1     public static void main(String[] args) throws ParseException {
 2         // NumberFormat 逗号分隔
 3         double num1 = 20140426.193;
 4         NumberFormat format = NumberFormat.getInstance(Locale.CHINESE);
 5         System.out.println(format.format(num1)); // 20,140,426.193
 6 
 7         // NumberFormat 百分数
 8         num1 = 0.2;
 9         format = NumberFormat.getPercentInstance();
10         System.out.println(format.format(num1)); // 20%
11         
12         // NumberFormat 货币
13         num1 = 100;
14         format = NumberFormat.getCurrencyInstance(Locale.JAPAN);
15         System.out.println(format.format(num1)); // ¥100    
16         
17         // DecimalFormat #代表该位置上数字可有可无,0代表该位置的数字不存在的话补零
18         num1 = 20140426.193;
19         DecimalFormat f = new DecimalFormat();
20         f.applyPattern("#########.0000");
21         System.out.println(f.format(num1)); // 20140426.1930
22         
23         // DecimalFormat 默认四舍五入
24         f.applyPattern("#########.0");
25         System.out.println(f.format(num1)); // 220140426.2
26         
27         // DecimalFormat 每三位以逗号进行分隔
28         f.applyPattern(",###");
29         System.out.println(f.format(num1)); // 20,140,426
30         
31         // DecimalFormat 科学计数法
32         f.applyPattern("#.###E0");
33         System.out.println(f.format(num1)); // 2.014E7
34 
35         // 百分数
36         num1 = 0.15;
37         f.applyPattern("##%");
38         System.out.println(f.format(num1)); // 15%
39         
40         // 将格式嵌入文本
41         num1 = 15.2;
42         f.applyPattern("现在的时间是下午##点");
43         System.out.println(f.format(num1)); // 现在的时间是下午15点
44         
45         // 将带有格式化的字符数字复原
46         f.applyPattern("#,###.#");
47         System.out.println(f.parse("15.4"));
48         System.out.println(f.parse("201,415.46"));
49         
50         // 精度为2,向远离0的方向舍入
51         MathContext context = new MathContext(2, RoundingMode.UP);
52         BigDecimal num2 = new BigDecimal("1");
53         System.out.println(num2.divide(new BigDecimal(3), context));
54         // 精度为2,向零方向舍入 
55         context = new MathContext(2, RoundingMode.DOWN);
56         System.out.println(num2.divide(new BigDecimal(3), context));
57         // 精度为2,向正无穷方向舍入
58         context = new MathContext(2, RoundingMode.CEILING);
59         System.out.println(num2.divide(new BigDecimal(3), context));
60         // 精度为2,向负无穷方向舍入
61         context = new MathContext(2, RoundingMode.FLOOR);
62         System.out.println(num2.divide(new BigDecimal(3), context));
63         // 精度为2,向(距离)最近的一边舍入(四舍五入),如果两边(的距离)相等,向上舍入
64         context = new MathContext(2, RoundingMode.HALF_UP);
65         System.out.println(num2.divide(new BigDecimal(3), context));
66         // 精度为2,向(距离)最近的一边舍入,如果两边(的距离)相等,向下舍入
67         context = new MathContext(2, RoundingMode.HALF_UP);
68         System.out.println(num2.divide(new BigDecimal(3), context));
69         // 精度为2,向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
70         context = new MathContext(2, RoundingMode.HALF_EVEN);
71         System.out.println(num2.divide(new BigDecimal(3), context));
72     }

Java 舍入模式 数字的格式化的更多相关文章

  1. Java中BigDecimal的8种舍入模式

    java.math.BigDecimal 不可变的.任意精度的有符号十进制数.BigDecimal 由任意精度的整数非标度值和32位的整数标度(scale)组成. 如果为零或正数,则标度是小数点后的位 ...

  2. Java中BigDecimal的8种舍入模式是怎样的

    Java中BigDecimal的8种舍入模式是怎样的?下面长沙欧柏泰克软件学院和大家一起来学习下吧:  java.math.BigDecimal 不可变的.任意精度的有符号十进制数.BigDecima ...

  3. Java中BigDecimal的舍入模式

    java.math.BigDecimal 不可变的.任意精度的有符号十进制数.BigDecimal 由任意精度的整数非标度值和32位的整数标度(scale)组成. 如果为零或正数,则标度是小数点后的位 ...

  4. Java大数类BigDecimal及八种舍入模式的介绍

    BigDecimal的引入 在利用Java编程语言开发银行.金融类等需要对数值进行高精度计算的软件时,我们经常使用BigDecimal和BigInteger这两个大数据类,而不是常见的int.long ...

  5. Java中数字的格式化输出

    Java中数字的格式化输出 double d = 345.678; String s = "hello!"; int i = 1234; //"%"表示进行格式 ...

  6. JSTL标签库中fmt标签,日期,数字的格式化

    首先介绍日期的格式化:(不要嫌多哦) JSTL格式化日期(本地化) 类似于数字和货币格式化,本地化环境还会影响生成日期和时间的方式. <%@ page pageEncoding="UT ...

  7. BigDecimal的精度舍入模式详解

    BigDecimal舍入模式介绍: 舍入模式在java.math.RoundingMode 里面: RoundingMode.CEILING :向正无限大方向舍入的舍入模式.如果结果为正,则舍入行为类 ...

  8. BigDecimal舍入模式使用及建议

    1. 八种舍入模式 此节内容参考于 https://my.oschina.net/sunchp/blog/670909. JDK1.5发布的枚举 RoundingMode 对 BigDecimal 的 ...

  9. BigDecimal 舍入模式(Rounding mode)介绍

    BigDecimal 舍入模式(Rounding mode)介绍 什么样的经历,才能领悟成为架构师? >>>   1 RoundingMode介绍 package java.math ...

随机推荐

  1. haproxy 负载elasticsearch 切换

    Attempted to send a bulk request to Elasticsearch configured at '["http://192.168.32.152:9200&q ...

  2. UML--核心元素之用例

    Use case 一个系统就是由各种各样的愿望组成的. 一个用例就是与参与者actor交互的,并且给参与者提供可观测的有意义的结果的一系列活动的集合. 例如你想做一顿饭吃,你需要完成煮饭和炒菜两件事情 ...

  3. lazy load 图片延迟加载 跟随滚动条

    http://plugins.jquery.com/lazyload/ Jquery.LazyLoad.js插件参数详解: 1,用图片提前占位 placeholder : "img/grey ...

  4. Java反编译插件jad

    原文地址:http://www.cnblogs.com/JimLy-BUG/p/5405868.html 1.首先下载jar文件:net.sf.jadclipse_3.3.0.jar  下载   2. ...

  5. UESTC_敢说就敢做 CDOJ 631

    敢说就敢做 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...

  6. REVERSE关键字之REVERSE索引

    昨天说到REVERSE关键字可以指REVERSE函数和REVERSE索引,简单介绍了下REVERSE函数的含义,今天简单整理下REVERSE索引. REVERSE索引也是一种B树索引,但它物理上将按照 ...

  7. Animation Override Controller动画重载器

    假设游戏有很多个小人, 每一个人有2种动画站立,跑.  在通常情况下每一个人物都需要一个动画控制器. 有没有想过定义一个动画控制器 无须在定义全新的动画充值器实现每一个小人都播放自己的动画呢?没错An ...

  8. iOS面试知识点

    1 iOS基础 1.1 父类实现深拷贝时,子类如何实现深度拷贝.父类没有实现深拷贝时,子类如何实现深度拷贝. 深拷贝同浅拷贝的区别:浅拷贝是指针拷贝,对一个对象进行浅拷贝,相当于对指向对象的指针进行复 ...

  9. 在OC和Swift中使用IBDesignable/IBInspectable

    iOS8新特性IBDesignable/IBInspectable,可以直接在XIB或者Storyboard中直接,设置UI类的属性.例 如:UIView.layer.borderWidth.bord ...

  10. 16. Linux 文件目录权限

    # 文件参数 d:表示是一个目录-:表示这是一个普通的文件l: 表示这是一个符号链接文件,实际上它指向另一个文件b.c:分别表示区块设备和其他的外围设备,是特殊类型的文件s.p:这些文件关系到系统的数 ...