多用英文
用 java setscale round difference 搜索得到该文章.
用 http://stackoverflow.com/questions/3843440/bigdecimal-setscale-and-round
round mathcontext的区别在于 精度 "precision"and "scale"(刻度规格)的区别 .
精度是指所有的数字个数
scale是指小数点后面的数字个数.
举个例子.
// 1.
new BigDecimal("35.3456").round(new MathContext(4, RoundingMode.HALF_UP));
//结果是 35.35
// 2.
new BigDecimal("35.3456").setScale(4, RoundingMode.HALF_UP);
// 结果是 35.3456
Math floor,round跟ceil 概念.对整数而言.如果要对小数区精度,就要转成上面的Bigdecimal了.
double本身没有什么好的方案.
Math.floor是向下取整;
Math.ceil是向上取整
Math.round可以随意设置取整规则