Java 格式化数字--- DecimalFormat
来源:互联网 发布:业务管理系统 源码 编辑:程序博客网 时间:2024/05/17 21:45
转载自:http://blog.csdn.net/qq_27093465/article/category/5713091
Java 格式化数字, 取2位小数, 按位取小数, 按要求格式化小数 DecimalFormat float,double,int,等类型都支持
标签: float取2位小数DecimalFormatJava数字格式化Java
关于float类型的数字如何保留2位小数,搜索的结果都差不多吧,但是都没有测试结果可以看,然后我就来总结一下,顺便留下测试的过程代码和结果。
算是留个记录吧,以备后用。
不要说先乘以10000再除以10000啥的,都不科学。
话不多说,看法宝!!!
[java]
1. package com.lxk.test; 2. 3. import java.text.DecimalFormat; 4. 5. /** 6. * 数字格式化测试 7. * <p> 8. * Created by lxk on 2017/1/22 9. */ 10. public class DecimalFormatTest { 11. public static void main(String[] args) { 12. float scale = 34.236323F; 13. DecimalFormat format = new DecimalFormat("##0.00"); 14. String dd = format.format(scale); 15. System.out.println(dd); 16. //下面简写 17. long num = 1; 18. //result = 9.313226E-10,也就是0.0000000009313226 19. float result = ((float) num) / (1024L * 1024L * 1024L); 20. System.out.println(result); 21. System.out.println(format.format(result)); 22. System.out.println("-------------我是分界线---1----------"); 23. showFormat(scale); 24. System.out.println("-------------我是分界线---2----------"); 25. showFormat(result); 26. System.out.println("-------------我是分界线---3----------"); 27. long c = 299792458L; 28. showFormat((float) c); 29. } 30. 31. private static void showFormat(float value) { 32. //取一位整数 33. System.out.println(new DecimalFormat("0").format(value)); 34. //取一位整数和两位小数 35. System.out.println(new DecimalFormat("0.00").format(value)); 36. //取两位整数和三位小数,整数不足部分以0填补 37. System.out.println(new DecimalFormat("00.000").format(value)); 38. //取所有整数部分 39. System.out.println(new DecimalFormat("#").format(value)); 40. //以百分比方式计数,并取两位小数 41. System.out.println(new DecimalFormat("#.##%").format(value)); 42. //显示为科学计数法,并取五位小数 43. System.out.println(new DecimalFormat("#.#####E0").format(value)); 44. //显示为两位整数的科学计数法,并取四位小数 45. System.out.println(new DecimalFormat("00.####E0").format(value)); 46. //每三位以逗号进行分隔。 47. System.out.println(new DecimalFormat(",###").format(value)); 48. //将格式嵌入文本 49. System.out.println(new DecimalFormat("所传入的格式化参数是:###大小。").format(value)); 50. } 51. }
然后就是上面代码的运行结果,如下:
[javascript]
1. 34.24 2. 9.313226E-10 3. 0.00 4. -------------我是分界线---1---------- 5. 34 6. 34.24 7. 34.236 8. 34 9. 3423.63% 10. 3.42363E1 11. 34.2363E0 12. 34 13. 所传入的格式化参数是:34大小。 14. -------------我是分界线---2---------- 15. 0 16. 0.00 17. 00.000 18. 0 19. 0% 20. 9.31323E-10 21. 93.1323E-11 22. 0 23. 所传入的格式化参数是:0大小。 24. -------------我是分界线---3---------- 25. 299792448 26. 299792448.00 27. 299792448.000 28. 299792448 29. 29979244800% 30. 2.99792E8 31. 29.9792E7 32. 299,792,448 33. 所传入的格式化参数是:299792448大小。 34. 35. Process finished with exit code 0
DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。
上面的例子包含了差不多所有的基本用法。
如果你想了解更多,请参考 DecimalFormat 类的文档。
下面是摘自jdk文档里面内容,虽然是1.6版本的,但是有这个类的中文介绍哟。
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。
该类设计有各种功能,使其能够解析和格式化任意语言环境中的数,包括对西方语言、阿拉伯语和印度语数字的支持。
它还支持不同类型的数,包括整数 (123)、定点数 (123.4)、科学记数法表示的数 (1.23E4)、百分数 (12%) 和金额 ($123)。所有这些内容都可以本地化。
舍入
DecimalFormat 提供 RoundingMode 中定义的舍入模式进行格式化。默认情况下,它使用 RoundingMode.HALF_EVEN。
同步
DecimalFormat 通常不是同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问某个格式,则必须保持外部同步。
关于 RoundingMode.HALF_EVEN的解释:
RoundingMode这个是个枚举类型,java.math包下。
有那么几个枚举常量,分别代表不同的舍入方式。下面简单介绍介个。
HALF_EVEN
向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。如果舍弃部分左边的数字为奇数,则舍入行为
同 RoundingMode.HALF_UP;如果为偶数,则舍入行为同 RoundingMode.HALF_DOWN。注意,在重复进行一系列计算时,此舍入模式可以在统计上将累加错误减到最小。
此舍入模式也称为“银行家舍入法”,主要在美国使用。此舍入模式类似于 Java 中对 float 和 double 算法使用的舍入策略。
HALF_UP
此舍入模式就是通常学校里讲的四舍五入。
HALF_DOWN
应该按上面的理解话,是五舍六入。
FLOOR
向负无限大方向舍入的舍入模式,此舍入模式始终不会增加计算值。白话文就是向下取整。
CEILING
向正无限大方向舍入的舍入模式。此舍入模式始终不会减少计算值。向上取整
UP
这个也是向上取整,但是,如果是坐标轴的话,这个都是远离零的方向取整,5.5->6; -2.5->-3
DOWN
这个也是向下取整,但是,如果是坐标轴的话,这个都是靠近零的方向取整,5.5->5; -2.5->-2
上面这些,记也记不住,用的时候,查一下再说吧。
看看这个例子,再理解一下上面的舍入的解释
- Java DecimalFormat 格式化数字
- java格式化数字DecimalFormat
- java格式化数字DecimalFormat
- Java 数字格式化 DecimalFormat
- java格式化数字DecimalFormat
- Java DecimalFormat 格式化数字
- java格式化数字DecimalFormat
- java格式化数字DecimalFormat
- java格式化数字DecimalFormat
- Java 数字格式化 DecimalFormat
- java格式化数字DecimalFormat
- java格式化数字DecimalFormat
- Java 格式化数字--- DecimalFormat
- java格式化数字DecimalFormat使用
- DecimalFormat (Java 格式化数字 )
- java.text.DecimalFormat()格式化输出数字
- java 数字格式化:小数点、百分比 NumberFormat Decimalformat
- java 数字格式化:小数点、百分比 NumberFormat Decimalformat
- ImageCaption算法总结
- python dbapi 2.0
- Maven的使用
- Java 加载、链接、初始化
- php核心学习-设计模式的学习-观察者模式
- Java 格式化数字--- DecimalFormat
- 为了下载资料奋斗积分
- struts2入门学习知识点(待完善)
- Android开发用到的工具
- 资讯精选 | 想感受“新零售”的未来吗?请看这四个案例!
- angular2学习笔记 2
- 关于 python cls 笔记
- 三级联动,面向过程与面向对象方法
- 正则表达式进阶