fengzf2020-08-22 15:20:23
等
BigDecimal先乘后除与先除后乘结果为什么差别那么大?
程序中用BigDecimal进行折扣率计算,计算结果异常
discountAmount =230.00 precision=0 scale=2
orderAmount=730.00 precision=5 scale=2
BigDecimal settlementRatio = discountAmount.multiply(new BigDecimal(100)).divide(orderAmount,2,BigDecimal.ROUND_HALF_UP);
结果:230.00*100/730.00=32.2
BigDecimal settlementRatio = discountAmount.divide(orderAmount,4,BigDecimal.ROUND_HALF_UP)
.multiply(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP);
结果:230.00/730.00*100=31.51
1、首选discountAmount是计算减出来,orderAmount是从数据库取得,不能理解为什么 orderAmount的precision 跟 discountAmount的不一样?!
2、这计算结果差别也太大了吧?!
3、自己在main方法里试了一下
System.out.println(new BigDecimal(230).setScale(2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).divide(new BigDecimal(730).setScale(2,BigDecimal.ROUND_HALF_UP),2,BigDecimal.ROUND_HALF_UP));
230*100/730=31.51,没毛病,Debug了一下
230 precision=0 scale=2
730 precision=0 scale=2
谁能解释一下这三个问题?
评论

abcadmin123 LV12020年8月23日
虽然你使用的是BigDecimal类型,但是使用的是它带浮点型参数的构造方法,在进行计算时会有精度丢失的情况存在,建议使用带字符串参数的构造方法,这样结果就唯一了
- 等最代码怎么获取牛币啊?
- 完谁来告诉我最代码上线的时间,答对者给5牛币,先来先得
- 等牛友们,大家好,你们做程序员多久了?现在还好吗?
- 完在微信打开的页面里进行app下载
- 等最代码2014年欢乐聚声会
- 完mysql如何查询表数据并且对3个字段降序的SQL?
- 完最代码牛币机制改革
- 完成功的在bae上使用了自定义运行环境 jetty+nginx的组合,大家对jetty+nginx优化有哪些心得?
- 完进来分享一下各位牛牛是如何加入最代码大家庭的?
- 等为什么java BufferedImage类处理大图直接抛出内存溢出的异常?
- 等最代码是否开发手机app客户端?
- 完java程序员学习哪些java的技术?java有哪些框架?都能做哪方面的开发?
- 等echarts柱状图鼠标悬浮时样式变化问题
- 等swagger 的@ApiModelProperty 注解和 @JacksonXmlProperty 注解不能同时使用
- 等Android Q如何获取所有运行进程的pid cpu 内存占用
- 等内网穿透client报错
- 等navicat要上传图片按加载后老是出现“只允许一个BLOB字段”是怎么回事?
- 等web开发遇到的安全问题
- 等百万级余额更新方案
- 等idea报Error connecting to reason: failed to create a child event loop,必须重启电脑才能正常,请问谁遇到过这样的问题吗?
- 等hibernate+MySQL8一直提示Access denied for user ''@'localhost' (using password: NO)
- 等技术人何去何从?
- 等hibernate我怎么去写自定义sql
- 等jstl的问题 :http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files

ld2805644085 LV1昨天
洛水微寒但晚秋 LV11月11日
清风徐来1024 LV21月9日
白纸一长 LV31月8日
dingjiaqiang LV42020年12月31日
java小书童 LV142020年12月28日
卞京伟 LV22020年12月22日
gtlishujie LV72020年12月15日
另类清晨 LV42020年12月4日
xu1235550332020年11月22日
暂无贡献等级