java 数值计算--应用中遇到的问题小记

数字运算:long类型的除法想保留小数:(用于计算折扣)
grouponRule.getGrouponPrice()、skuPrice均为long类型
f1 = ((float) grouponRule.getGrouponPrice() / skuPrice) * 10
需要强制转换为float
如果想保留指定位数:

new BigDecimal(f1).setScale(1,BigDecimal.ROUND_HALF_UP)

long skuPrice = grouponRule.getSkuPrice().longValue() * 100;

以上代码当grouponRule.getSkuPrice()的数值较小时、skuPrice拿到的数值可能会为0,后续如果当做除数就会有问题:

正确解决办法:long skuPrice = grouponRule.getSkuPrice().multiply(new BigDecimal(100)).longValue();

 

猜你喜欢

转载自zxh56964106.iteye.com/blog/2287454