java四舍五⼊BigDecimal(对(x)分为四舍五⼊计算⽅法)
业务需求变更,合同管理⽀付⾦额要保留千分位(并且四舍五⼊),⼀下让我懵逼,到⽹上查看许多博客,到没有达到我要的效果,想了⼀个多⼩时,最后灵机⼀动,终于明⽩,最后终结⼀下BigDecimal⽅法⽤法。
1.java四舍五⼊BigDecimal
这是在⽹上查到对BigDecimal 四舍五⼊ ⽐较详细。
public class Test {
public static void main(String[] args) {
double i = 3.856;
// 舍掉⼩数取整
System.out.println(“舍掉⼩数取整:Math.floor(3.856)=” + (int) Math.floor(i));
// 四舍五⼊取整
System.out.println(“四舍五⼊取整:(3.856)=”
+ new BigDecimal(i).setScale(0, BigDecimal.ROUND_HALF_UP));
// 四舍五⼊保留两位⼩数
System.out.println(“四舍五⼊取整:(3.856)=”
+ new BigDecimal(i).setScale(2, BigDecimal.ROUND_HALF_UP));
// 凑整,取上限
System.out.println(“凑整:il(3.856)=” + (int) il(i));
// 舍掉⼩数取整
System.out.println(“舍掉⼩数取整:Math.floor(-3.856)=” + (int) Math.floor(-i));
// 四舍五⼊取整
System.out.println(“四舍五⼊取整:(-3.856)=”
+ new BigDecimal(-i).setScale(0, BigDecimal.ROUND_HALF_UP));
// 四舍五⼊保留两位⼩数
System.out.println(“四舍五⼊取整:(-3.856)=”
+ new BigDecimal(-i).setScale(2, BigDecimal.ROUND_HALF_UP));
// 凑整,取上限
System.out.println(“凑整(-3.856)=” + (int) il(-i));
}
}
//打印的结果
舍掉⼩数取整:Math.floor(3.856)=3
四舍五⼊取整:(3.856)=4
四舍五⼊取整:(3.856)=3.86
凑整:il(3.856)=4
舍掉⼩数取整:Math.floor(-3.856)=-4
四舍五⼊取整:(-3.856)=-4
四舍五⼊取整:(-3.856)=-3.86
凑整(-3.856)=-3
1. 对(x)分为四舍五⼊计算⽅法`
2. /**
1. 描述 : 对(x)分为四舍五⼊计算⽅法 x(任意百分位)
2. @param a 被除数
3. @param b 除数
4. @return String
5. 备注 : 参数类型任意
*/
@SuppressWarnings(“unused”)bigdecimal除法保留小数
public static String calculateDigits (Object a, Object b) {
// 下⾯这⼀⾏⾥的2,表⽰保留⼩数点后多少位(四舍五⼊),如果两位就是2,如果⼩数点前三,就改成3.
BigDecimal result = new BigDecimal(String.valueOf(a)).divide
(new BigDecimal(String.valueOf(b)), -3, BigDecimal.ROUND_HALF_UP);
// 数据格式化显⽰ (210,000)
//return new DecimalFormat(“###,###”).format(Double.String())).toString();
return new DecimalFormat(“>#”).format(Double.String())).toString();
}`
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
Double类型运算时的精度问题
下一篇 »
发表评论