Java 舍入模式 数字的格式化
舍入模式:
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 舍入模式 数字的格式化的更多相关文章
- Java中BigDecimal的8种舍入模式
java.math.BigDecimal 不可变的.任意精度的有符号十进制数.BigDecimal 由任意精度的整数非标度值和32位的整数标度(scale)组成. 如果为零或正数,则标度是小数点后的位 ...
- Java中BigDecimal的8种舍入模式是怎样的
Java中BigDecimal的8种舍入模式是怎样的?下面长沙欧柏泰克软件学院和大家一起来学习下吧: java.math.BigDecimal 不可变的.任意精度的有符号十进制数.BigDecima ...
- Java中BigDecimal的舍入模式
java.math.BigDecimal 不可变的.任意精度的有符号十进制数.BigDecimal 由任意精度的整数非标度值和32位的整数标度(scale)组成. 如果为零或正数,则标度是小数点后的位 ...
- Java大数类BigDecimal及八种舍入模式的介绍
BigDecimal的引入 在利用Java编程语言开发银行.金融类等需要对数值进行高精度计算的软件时,我们经常使用BigDecimal和BigInteger这两个大数据类,而不是常见的int.long ...
- Java中数字的格式化输出
Java中数字的格式化输出 double d = 345.678; String s = "hello!"; int i = 1234; //"%"表示进行格式 ...
- JSTL标签库中fmt标签,日期,数字的格式化
首先介绍日期的格式化:(不要嫌多哦) JSTL格式化日期(本地化) 类似于数字和货币格式化,本地化环境还会影响生成日期和时间的方式. <%@ page pageEncoding="UT ...
- BigDecimal的精度舍入模式详解
BigDecimal舍入模式介绍: 舍入模式在java.math.RoundingMode 里面: RoundingMode.CEILING :向正无限大方向舍入的舍入模式.如果结果为正,则舍入行为类 ...
- BigDecimal舍入模式使用及建议
1. 八种舍入模式 此节内容参考于 https://my.oschina.net/sunchp/blog/670909. JDK1.5发布的枚举 RoundingMode 对 BigDecimal 的 ...
- BigDecimal 舍入模式(Rounding mode)介绍
BigDecimal 舍入模式(Rounding mode)介绍 什么样的经历,才能领悟成为架构师? >>> 1 RoundingMode介绍 package java.math ...
随机推荐
- Linux文件系统挂载管理
http://itercast.com/lecture/19 文件系统创建好之后需要挂载到系统中方可使用,windows.Mac系统会自动挂载文件系统,而Linux下一般需要手工挂载或配置系统进行自动 ...
- 从java8 说起函数式编程
写在前面 为什么要用函数式编程.看例子: final List<BigDecimal> prices = Arrays.asList( new BigDecimal("10&qu ...
- MFC调用c#的dll
一.使用 /clr 编译 MFC 可执行文件或规则 DLL 1.打开“项目属性”对话框,方法是右键单击“解决方案资源管理器”中的项目并选择“属性”. 2.展开“配置属性”旁边的节点并选择“常规”.在右 ...
- 第07讲- Android项目的打包apk
第07讲Android项目的打包apk 方法一:在工作目录bin文件夹下有一个与项目同名的apk文件 (最懒惰的方式,不推荐,不安全,不利于版本更新,只有在开发模式时使用) 方法二:使用key方式 签 ...
- Android硬件抽象层(HAL)概要介绍和学习计划
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6567257 Android的硬件抽象层,简单来 ...
- ThinkPHP视图查询详解
ThinkPHP视图查询详解 参考http://www.jb51.net/article/51674.htm 这篇文章主要介绍了ThinkPHP视图查询,需要的朋友可以参考下 ThinkP ...
- java获取文件大小
1.使用File的length()方法获取.这个方法获取的字节数,由于返回的是Long类型所以能返回的最大值是Long.MAX_VALUE File file = new File( "D: ...
- [Spring入门学习笔记][Spring Boot]
什么是Spring Boot Spring Boot正是在这样的一个背景下被抽象出来的开发框架,它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速.敏捷地开发新一代基于Spring框架 ...
- eclipse安装Flash Builder 4后变成中文,怎么解决
修改eclipse.ini启动参数: -startup plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.libr ...
- Chrome开发者工具详解(3):Timeline面板
Timeline面板 Timeline面板是整个面板里面最复杂的一个面板,涉及的东西比较多.可以利用这个面板来记录和分析网页运行过程中的所有活动行为信息. 你可以充分利用这个面板来分析你的网页的程序性 ...