小数点位数的处理


//保留几位小数  
//number为需要处理的数值,fractionDigits为保留位数

function round2(number,fractionDigits){   
   return  Math.round(number*Math.pow(10,fractionDigits))/Math.pow(10,fractionDigits);   
} 


//小数点位数加0补齐  x为待处理数值,n为补齐位数,超过n不处理
function toDecimal(x,n) {


    var f = parseFloat(x);   
    var n = parseFloat(n);    
    if (isNaN(f)) {    
        return false;    
    }    
      
    var s = f.toString();    
    var rs = s.indexOf('.');    
    if (rs < 0) {    
        rs = s.length;    
        s += '.';    
    }    
    while (s.length <= rs + n) {    
        s += '0';    
    }    
    return s;    
}   

   
在Java中,可使用`BigDecimal`的`setScale()`方法设置小数点位数。以下是不同设置方式的示例: ### 基本设置 ```java import java.math.BigDecimal; public class BigDecimalScaleExample { public static void main(String[] args) { BigDecimal price = new BigDecimal("5.5564"); // 保留两位小数(精度缺失,抛出异常) // price.setScale(2); // 保留两位小数四舍五入 BigDecimal result1 = price.setScale(2, BigDecimal.ROUND_HALF_UP); System.out.println("四舍五入保留两位小数: " + result1); // 保留两位小数直接截取 BigDecimal result2 = price.setScale(2, BigDecimal.ROUND_HALF_DOWN); System.out.println("直接截取保留两位小数: " + result2); } } ``` 在上述代码中,`setScale(2, BigDecimal.ROUND_HALF_UP)`表示保留两位小数并进行四舍五入,而`setScale(2, BigDecimal.ROUND_HALF_DOWN)`表示保留两位小数并直接截取[^1]。 ### 更多舍入模式 `setScale()`方法还有其他舍入模式,示例如下: ```java import java.math.BigDecimal; public class BigDecimalMoreRounding { public static void main(String[] args) { BigDecimal num = new BigDecimal("2.35"); // 直接删除多余的小数位 BigDecimal result1 = num.setScale(1, BigDecimal.ROUND_DOWN); System.out.println("直接删除多余小数位: " + result1); // 进位处理 BigDecimal result2 = num.setScale(1, BigDecimal.ROUND_UP); System.out.println("进位处理: " + result2); // 四舍五入 BigDecimal result3 = num.setScale(1, BigDecimal.ROUND_HALF_UP); System.out.println("四舍五入: " + result3); // 四舍五入(如果是5则向下舍) BigDecimal result4 = num.setScale(1, BigDecimal.ROUND_HALF_DOWN); System.out.println("四舍五入(5向下舍): " + result4); // 接近正无穷大的舍入 BigDecimal result5 = num.setScale(1, BigDecimal.ROUND_CEILING); System.out.println("接近正无穷大的舍入: " + result5); // 接近负无穷大的舍入 BigDecimal result6 = num.setScale(1, BigDecimal.ROUND_FLOOR); System.out.println("接近负无穷大的舍入: " + result6); // 向最接近的数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入 BigDecimal result7 = num.setScale(1, BigDecimal.ROUND_HALF_EVEN); System.out.println("向相邻偶数舍入: " + result7); } } ``` 这里展示了`setScale()`方法不同舍入模式的使用,如`ROUND_DOWN`直接删除多余小数位,`ROUND_UP`进位处理等[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值