字符串数字转int并设置初始值--->NumberUtils用法

package zuny.utiil.number;

import org.apache.commons.lang3.math.NumberUtils;
import java.math.BigDecimal;
import java.math.RoundingMode;

public class NumberUtilsTest {

    public static void main(String[] args) {
        //用法一:字符串数字转为基本类型(默认值)
        //不设置默认值。如果为null或"" 默认值0
        int i = NumberUtils.toInt("1");
        System.out.println(i);//1
        int i1 = NumberUtils.toInt("");
        System.out.println(i1);//0
        int i2 = NumberUtils.toInt(null);
        System.out.println(i2);//0
        //如果设置默认值,输出默认值
        int i3 = NumberUtils.toInt("", 999);
        System.out.println(i3);//999
        int i4 = NumberUtils.toInt("1", 000);
        System.out.println(i4);//1  当有值时,输出当前值

        /**
         * 其他类型同理
         * toLong    默认值 0L
         * toFloat   默认值0.0f
         * toDouble  默认值0.0d
         * ......
         */

        /**
         * toScaledBigDecimal()   将值转为BigDecimal  可以作用于 bigDecimal、float、double、String
         * 看源码知:默认保留两位并采用 BigDecimal.ROUND_HALF_EVEN(银行家算法)
         * 其算法的思想是:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一。
         *
         */
        BigDecimal bigDecimal = NumberUtils.toScaledBigDecimal(3.5);
        System.out.println(bigDecimal);//3.50
        BigDecimal bigDecimal1 = NumberUtils.toScaledBigDecimal("3.568");
        System.out.println(bigDecimal1);//3.57
        //todo 验证算法思想
        BigDecimal bigDecimal2 = NumberUtils.toScaledBigDecimal(3.644);
        System.out.println(bigDecimal2);//3.64  4舍弃
        BigDecimal bigDecimal3 = NumberUtils.toScaledBigDecimal(3.666);
        System.out.println(bigDecimal3);//3.67 6入
        BigDecimal bigDecimal4 = NumberUtils.toScaledBigDecimal(3.6651);
        System.out.println(bigDecimal4);//3.67 5后非0就进1
        BigDecimal bigDecimal5 = NumberUtils.toScaledBigDecimal(3.6650);
        System.out.println(bigDecimal5);//3.66  五后为零看奇偶,五前为偶应舍去,五前为奇要进一(5的前面是6为偶数)
        BigDecimal bigDecimal6 = NumberUtils.toScaledBigDecimal(3.6550);
        System.out.println(bigDecimal6);//3.66 (5前面是5为奇数 要进1)
        /**
         * 自定义保留几位小数,和采用的算法
         */
        BigDecimal bigDecimal7 = NumberUtils.toScaledBigDecimal(3.5679, 3,
                RoundingMode.valueOf(BigDecimal.ROUND_DOWN));
        System.out.println(bigDecimal7);//3.567
        //HALF_DOWN(BigDecimal.ROUND_HALF_DOWN),RoundingMode.HALF_EVEN相当于BigDecimal.ROUND_HALF_DOWN四舍五入
        BigDecimal bigDecimal8 = NumberUtils.toScaledBigDecimal(3.5679, 3, RoundingMode.HALF_EVEN);
        System.out.println(bigDecimal8);//3.568

        //用法二:create...
        Number number = NumberUtils.createNumber("1");
        System.out.println(number);//1
//        Number number1 = NumberUtils.createNumber(""); //A blank string is not a valid number
        Number number2 = NumberUtils.createNumber(null);
        System.out.println(number2);//null
//        Number asvda = NumberUtils.createNumber("asvda"); //asvda is not a valid number.

        //Float aFloat = NumberUtils.createFloat(""); //empty String
        Float aFloat1 = NumberUtils.createFloat(null);
        System.out.println(aFloat1);//null
        Float aFloat = NumberUtils.createFloat("12");
        System.out.println(aFloat);//12.0
        /**
         * 其他 Integer、Long、Double、BigInteger 同理
         */

        //用法三:最小、最大值  long、int、short、byte、double、float
        //数组不能为空
        int max1 = NumberUtils.max(new int[]{1, 5, 9});
        System.out.println(max1);//9
        int max = NumberUtils.max(1, 2, 3, 4, 5, 6);
        System.out.println(max);//6
        int min = NumberUtils.min(1, 2, 3, 4, 5, 6);
        System.out.println(min);//1

        //用法四 检验
        //isCreatable
        System.out.println(NumberUtils.isCreatable("3.4")); // true

       // isDigits 判断字符串中是否全为数字
        System.out.println(NumberUtils.isDigits("12.0")); // false
        System.out.println(NumberUtils.isDigits("123")); // true

        //用法五:比较 compare
        //compare 比较两个数的大小,参数1比参数2大,返回1,小返回-1,等返回0
        System.out.println(NumberUtils.compare(2,1));//1
        System.out.println(NumberUtils.compare(1, 2)); // -1
        System.out.println(NumberUtils.compare(1,1)); //0
        System.out.println(NumberUtils.compare(-2,-1));//-1

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值