java数字字符类型转换,JAVA 把字符串转换成数字类型

T strToNum(String content, Classclassz) {

if (StringUtils.isBlank(content))

return null;

String pattern = "^\\-?\\d+\\.?\\d*$";

// 判断是否是数字

boolean isMatch = Pattern.matches(pattern, content);

if (!isMatch)

return null;

BigDecimal bd = new BigDecimal(content);

// 超长处理,进行四舍五入操作,并返回对应类型的值

Object ob = null;

int rp = BigDecimal.ROUND_HALF_UP;// 舍入方式

if (classz.equals(Double.class))

if (bd.compareTo(new BigDecimal(Double.MAX_VALUE)) > 0)

ob = Double.MAX_VALUE;

else if (bd.compareTo(new BigDecimal(Double.MIN_VALUE)) < 0)

ob = Double.MIN_VALUE;

else

ob = bd.setScale(0, rp).doubleValue();

else if (classz.equals(Long.class))

if (bd.compareTo(new BigDecimal(Long.MAX_VALUE)) > 0)

ob = Long.MAX_VALUE;

else if (bd.compareTo(new BigDecimal(Long.MIN_VALUE)) < 0)

ob = Long.MIN_VALUE;

else

ob = bd.setScale(0, rp).longValue();

else if (classz.equals(Integer.class))

if (bd.compareTo(new BigDecimal(Integer.MAX_VALUE)) > 0)

ob = Integer.MAX_VALUE;

else if (bd.compareTo(new BigDecimal(Integer.MIN_VALUE)) < 0)

ob = Integer.MIN_VALUE;

else

ob = bd.setScale(0, rp).intValue();

else if (classz.equals(Float.class))

if (bd.compareTo(new BigDecimal(Float.MAX_VALUE)) > 0)

ob = Float.MAX_VALUE;

else if (bd.compareTo(new BigDecimal(Float.MIN_VALUE)) < 0)

ob = Float.MIN_VALUE;

else

ob = bd.setScale(0, rp).floatValue();

else if (classz.equals(Byte.class))

if (bd.compareTo(new BigDecimal(Byte.MAX_VALUE)) > 0)

ob = Byte.MAX_VALUE;

else if (bd.compareTo(new BigDecimal(Byte.MIN_VALUE)) < 0)

ob = Byte.MIN_VALUE;

else

ob = bd.setScale(0, rp).byteValue();

else if (classz.equals(Short.class))

if (bd.compareTo(new BigDecimal(Short.MAX_VALUE)) > 0)

ob = Short.MAX_VALUE;

else if (bd.compareTo(new BigDecimal(Short.MIN_VALUE)) < 0)

ob = Short.MIN_VALUE;

else

ob = bd.setScale(0, rp).shortValue();

return classz.cast(ob);

}

}

console:

content 2147483648 Double 2.147483648E9 Long 2147483648 Integer 2147483647 Float 2.14748365E9 Short 32767 Byte 127

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值