今天項目中需要更改時長的顯示方式,規定必須保留兩位小數,剛才看簡書的時候正好看到一個指定保留小數位數的工具類的文章,在此基礎上,做了一點小修改,用起來更加方便了,有需要的朋友盡管擼走
DecimalUtils 類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; /** * Created by Sean on 17/3/10. */ public class DecimalUtils { /** * 按四舍五入保留指定小數位數,位數不夠用0補充 * @param o 格式化前的小數 * @param newScale 保留小數位數 * @return 格式化后的小數 */ public static String formatDecimalWithZero(Object o, int newScale) { return String.format( "%." + newScale + "f" , o); } /** * 按四舍五入保留指定小數位數,位數不夠用0補充 * @param d 格式化前的小數 * @param newScale 保留小數位數 * @return 格式化后的小數 */ public static String formatDecimalWithZero( double d, int newScale) { String pattern = "0." ; for ( int i = 0 ; i < newScale; i++) { pattern += "0" ; } DecimalFormat df = new DecimalFormat(pattern); return df.format(d); } /** * 按四舍五入保留指定小數位數,位數不夠用0補充 * @param d 格式化前的小數 String形式 * @param newScale 保留小數位數 * @return 格式化后的小數 */ public static String formatDecimalWithZero(String d, int newScale) { String pattern = "0." ; for ( int i = 0 ; i < newScale; i++) { pattern += "0" ; } DecimalFormat df = new DecimalFormat(pattern); return df.format(Double.valueOf(d)); } /** * 按四舍五入保留指定小數位數,小數點后僅保留有效位數 * @param d 格式化前的小數 * @param newScale 保留小數位數 * @return 格式化后的小數 */ public static String formatDecimal( double d, int newScale) { String pattern = "#." ; for ( int i = 0 ; i < newScale; i++) { pattern += "#" ; } DecimalFormat df = new DecimalFormat(pattern); return df.format(d); } /** * 按四舍五入保留指定小數位數,小數點后僅保留有效位數 * @param d 格式化前的小數 * @param newScale 保留小數位數 * @return 格式化后的小數 */ public static String formatDecimal(String d, int newScale) { String pattern = "#." ; for ( int i = 0 ; i < newScale; i++) { pattern += "#" ; } DecimalFormat df = new DecimalFormat(pattern); return df.format(Double.valueOf(d)); } /** * 按指定舍入模式保留指定小數位數 * @param d 格式化前的小數 * @param newScale 保留小數位數 * @param roundingMode 舍入模式 * (RoundingMode.UP始終進一/DOWN直接舍棄/ * CEILING正進負舍/FLOOR正舍負進/ * HALF_UP四舍五入/HALF_DOWN五舍六進/ * HALF_EVEN銀行家舍入法/UNNECESSARY拋出異常) * @return 格式化后的小數 */ public static double formatDecimal( double d, int newScale, RoundingMode roundingMode) { BigDecimal bd = new BigDecimal(d).setScale(newScale, roundingMode); return bd.doubleValue(); } /** * 按指定舍入模式保留指定小數位數 * @param d 格式化前的小數 * @param newScale 保留小數位數 * @param roundingMode 舍入模式 * (RoundingMode.UP始終進一/DOWN直接舍棄/ * CEILING正進負舍/FLOOR正舍負進/ * HALF_UP四舍五入/HALF_DOWN五舍六進/ * HALF_EVEN銀行家舍入法/UNNECESSARY拋出異常) * @return 格式化后的小數 */ public static double formatDecimal(String d, int newScale, RoundingMode roundingMode) { BigDecimal bd = new BigDecimal(Double.valueOf(d)).setScale(newScale, roundingMode); return bd.doubleValue(); } } |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.jianshu.com/p/c8e3b1be2d2a