需求:
根据小数点后第二位,判断大于5进位,小于等于5则将第二位替换为5。
本人一遍没有写完善,这里贴出后期完善后的代码(欢迎各位提供漏洞)
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
<code>/**</code>
<code> </code><code>* 根据小数点第二位,进行判断</code>
<code> </code><code>* @author 章力</code>
<code> </code><code>* @email [email protected]</code>
<code> </code><code>*/</code>
<code>public</code> <code>static</code> <code>String round(BigDecimal bgd){</code>
<code> </code><code>// 只获取小数点后两位</code>
<code> </code><code>DecimalFormat dfmt = </code><code>new</code> <code>DecimalFormat(</code><code>"0.##"</code><code>);</code>
<code> </code><code>String bgdStr = dfmt.format(bgd);</code>
<code> </code><code>// 小数点下标</code>
<code> </code><code>int</code> <code>idx = bgdStr.indexOf(</code><code>"."</code><code>);</code>
<code> </code><code>if</code><code>(idx></code><code>0</code><code>){</code>
<code> </code><code>// 整数部分</code>
<code> </code><code>String intStr = bgdStr.substring(</code><code>0</code><code>,idx);</code>
<code> </code><code>// 小数点后第1位数</code>
<code> </code><code>String postOne = bgdStr.substring(idx+</code><code>1</code><code>, idx+</code><code>2</code><code>);</code>
<code> </code><code>// 规则计算后的数值</code>
<code> </code><code>String newNumU = dfmt.format(Double.parseDouble(intStr+</code><code>"."</code><code>+postOne)+</code><code>0.1</code><code>);</code>
<code> </code><code>String newNumD = intStr+</code><code>"."</code><code>+postOne+</code><code>"5"</code><code>;</code>
<code> </code>
<code> </code><code>// 小数点后只有一位小数,默认第二位是零>小于5,直接替换为5</code>
<code> </code><code>int</code> <code>postnL = bgdStr.length()-(idx+</code><code>1</code><code>);</code>
<code> </code><code>if</code><code>(postnL<</code><code>2</code><code>){</code>
<code> </code><code>return</code> <code>newNumD;</code>
<code> </code><code>}</code>
<code> </code><code>// 小数点后有第二位,进行规则判断</code>
<code> </code><code>// 大于5,向上进位</code>
<code> </code><code>// 小于等于5,直接替换为5</code>
<code> </code><code>int</code> <code>postTwo = Integer.parseInt(bgdStr.substring(idx+</code><code>2</code><code>));</code>
<code> </code><code>if</code><code>(postTwo></code><code>5</code><code>){</code>
<code> </code><code>return</code> <code>newNumU;</code>
<code> </code><code>}</code><code>else</code><code>{</code>
<code> </code><code>}</code><code>else</code><code>{</code>
<code> </code><code>return</code> <code>bgdStr+</code><code>".05"</code><code>;</code>
<code> </code><code>}</code>
<code>}</code>
<code></code>
本文转自 沫沫金 51CTO博客,原文链接:http://blog.51cto.com/zl0828/1420043,如需转载请自行联系原作者