文档章节

保留两位小数,0自动取消

mengchenzhao
 mengchenzhao
发布于 2017/03/21 15:15
字数 678
阅读 81
收藏 0

   1. 使用java.math.BigDecimal 

     2. 使用java.text.DecimalFormat 

     3. 使用java.text.NumberFormat 

     4. 使用java.util.Formatter 

     5. 使用String.format 

文章末尾给大家分享了更多的拓展知识,另外可以自己实现或者借用封装好的类库来实现,在这篇文章中就不一一列举了。 下面来看看详细的介绍。

一、使用BigDecimal,保留小数点后两位

?

1

2

3

4

5

6

public static String format1(double value) {

 

 BigDecimal bd = new BigDecimal(value);

 bd = bd.setScale(2, RoundingMode.HALF_UP);

 return bd.toString();

}

二、使用DecimalFormat,保留小数点后两位

?

1

2

3

4

5

6

public static String format2(double value) {

 

 DecimalFormat df = new DecimalFormat("0.00");

 df.setRoundingMode(RoundingMode.HALF_UP);

 return df.format(value);

}

三、使用NumberFormat,保留小数点后两位

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

public static String format3(double value) {

 

 NumberFormat nf = NumberFormat.getNumberInstance();

 nf.setMaximumFractionDigits(2);

 /*

  * setMinimumFractionDigits设置成2

  *

  * 如果不这么做,那么当value的值是100.00的时候返回100

  *

  * 而不是100.00

  */

 nf.setMinimumFractionDigits(2);

 nf.setRoundingMode(RoundingMode.HALF_UP);

 /*

  * 如果想输出的格式用逗号隔开,可以设置成true

  */

 nf.setGroupingUsed(false);

 return nf.format(value);

}

四、使用java.util.Formatter,保留小数点后两位

?

1

2

3

4

5

6

public static String format4(double value) {

 /*

  * %.2f % 表示 小数点前任意位数 2 表示两位小数 格式后的结果为 f 表示浮点型

  */

 return new Formatter().format("%.2f", value).toString();

}

五、使用String.format来实现。

?

1

2

3

4

public static String format5(double value) {

 

 return String.format("%.2f", value).toString();

}

扩展知识

String.format 作为文本处理工具,为我们提供强大而丰富的字符串格式化功能。

对浮点数进行格式化                        

占位符格式为: %[index$][标识]*[最小宽度][.精度]转换符

?

1

2

3

4

double num = 123.4567899;

System.out.print(String.format("%f %n", num)); // 123.456790

System.out.print(String.format("%a %n", num)); // 0x1.edd3c0bb46929p6

System.out.print(String.format("%g %n", num)); // 123.457

可用标识:

      -,在最小宽度内左对齐,不可以与0标识一起使用。

      0,若内容长度不足最小宽度,则在左边用0来填充。

      #,对8进制和16进制,8进制前添加一个0,16进制前添加0x。

      +,结果总包含一个+或-号。

      空格,正数前加空格,负数前加-号。

      ,,只用与十进制,每3位数字间用,分隔。

      (,若结果为负数,则用括号括住,且不显示符号。

可用转换符:

      b,布尔类型,只要实参为非false的布尔类型,均格式化为字符串true,否则为字符串false。

      n,平台独立的换行符, 也可通过System.getProperty("line.separator")获取。

      f,浮点数型(十进制)。显示9位有效数字,且会进行四舍五入。如99.99。

      a,浮点数型(十六进制)。

      e,指数类型。如9.38e+5。

      g,浮点数型(比%f,%a长度短些,显示6位有效数字,且会进行四舍五入)

© 著作权归作者所有

mengchenzhao
粉丝 0
博文 19
码字总数 14331
作品 0
南京
私信 提问
DecimalFormat 类基本使用

/* * DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度 * 0 表示如果位数不足则以 0 填充 * # 表示只要有可能就把数字拉上这个位置 * */ public static void main(String[] args){...

嘴角轻扬30
2018/12/15
18
0
Android中关于保留小数点位数的处理

保留两位小数 方法一: 方式二: 例:new java.text.DecimalFormat(“#.00”).format(3.1415926) .00 表示两位小数 #.0000四位小数 以此类推… 方式三: %.2f %. 表示 小数点前任意位数 2 表...

天鬼
2018/01/29
0
0
PHP_小数/四舍五入/上进/下取等

小数例子: PHP保留两位小数并且四舍五入 $n=0.1265489;echo sprintf("%.2f", $n); // 0.13 大家可以看到我们用到了sprintf函数对$n进行了格式化%.2f是目标格式,其中2表示两位f表示float(浮...

喵王不瞌睡
2015/02/05
213
0
freemarker 数字格式化深入理解

一、使用内建函数c 特点: 不管其表现形式是怎样的(例如"123,456.123,456"、"123456.123456"、"000123456.123456000"、"123,456.123456"、"1,2345,6.123456"),只要小数分割符是'.'它就能转......

毛朱
2013/01/24
491
0
变量与字符串的连接 - format、格式化字符串

变量与字符串的连接 先当以如下三个变量: name = 'wwb' age = '17' job = 'study' 方法一:利用+号进行连接 >>> info1 = '''Welcome to ''' + name +''''s code kingdom ... Name:''' + na......

CzlunSu
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

zk中ToBeAppliedRequestProcessor解析

ToBeAppliedRequestProcessor在Leader中 在已处理事务和最后处理事务处理器之间,处理器链上下一个是FinalRequestProcessor public void processRequest(Request request) throws RequestPro...

writeademo
34分钟前
3
0
Allegro快捷键设置-PCB环境

立题简介: 内容:简单介绍Allegro绘制的PCB环境下的快捷键; 来源:实际使用得出; 作用:对Allegro绘制PCB快捷键进行介绍; PCB环境:Cadence 16.6; 立题详解: 对“allegro”板而言,其在...

demyar
35分钟前
3
0
idea maven web项目启动build时报错java.lang.NullPointerException

之前还好好的,重启一下idea就报这个错了,大概率是tomcat没杀掉端口被占用了,在tomcat配置中更换一下sever端口就好了

宇辰OSC
39分钟前
3
0
weed3-2.3.1.查询之输出

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 查询可是个复杂的话题了,可能我们80%的数据库处理都在查询。 今天先...

刘之西东
39分钟前
3
0
【Android JetPack系列】数据绑定:DataBinding

参考MVVM

Agnes2017
47分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部