美文网首页
BigDecimal

BigDecimal

作者: 钦_79f7 | 来源:发表于2019-12-20 16:34 被阅读0次

    使用BigDecimal 做小数点精度计算

    • [BigDecimal.ROUND_UP]:全部进1;远离0的方向舍入
    • [BigDecimal.ROUND_DOWN]:全部舍去;靠近0的方向舍入
    • [BigDecimal.ROUND_FLOOR]:正数等同于[BigDecimal.ROUND_DOWN];负数等同于[BigDecimal.ROUND_UP];即靠近负无穷大的方向舍入
    • [BigDecimal.ROUND_CEILING]:正数等同于[BigDecimal.ROUND_UP];负数等同于[BigDecimal.ROUND_DOWN];即靠近正无穷大的方向舍入
    • [BigDecimal.ROUND_HALF_EVEN]:四舍六入五成双
    • [BigDecimal.ROUND_HALF_DOWN]:五舍六入
    • [BigDecimal.ROUND_HALF_UP]:四舍五入

    ==注意==:此处创建BigDecimal对象不可直接使用Double,需要将其想转化为字符串之后再行创建BigDecimal。

    /**
     * 保留小数
     * @param scale 几位小数
     * @param roundMode 针对5的处理,默认是四舍六入五成双;
     *
     * [BigDecimal.ROUND_UP]:全部进1;远离0的方向舍入
     * [BigDecimal.ROUND_DOWN]:全部舍去;靠近0的方向舍入
     * [BigDecimal.ROUND_FLOOR]: 正数等同于[BigDecimal.ROUND_DOWN];负数等同于[BigDecimal.ROUND_UP];即靠近负无穷大的方向舍入
     * [BigDecimal.ROUND_CEILING]:正数等同于[BigDecimal.ROUND_UP];负数等同于[BigDecimal.ROUND_DOWN];即靠近正无穷大的方向舍入
     * [BigDecimal.ROUND_HALF_EVEN]:四舍六入五成双
     * [BigDecimal.ROUND_HALF_DOWN]:五舍六入
     * [BigDecimal.ROUND_HALF_UP]:四舍五入
     *
     */
    fun Double.formatDecimals(scale: Int = 2, roundMode: Int = BigDecimal.ROUND_HALF_EVEN): String {
        // Note:8/23/18 此处创建BigDecimal对象不可直接使用Double,需要将其想转化为字符串之后再行创建BigDecimal。
        val bigDecimal = BigDecimal(this.toString())
        return bigDecimal.setScale(scale, roundMode).toString()
    }
    

    相关文章

      网友评论

          本文标题:BigDecimal

          本文链接:https://www.haomeiwen.com/subject/xheinctx.html