洞察管理小程序实例的关键在于实现跨平台能力与数据安全,如何利用FinClip助力企业在数字化转型中既合规又高效?
784
2022-11-14
BigDecimal.setScale()方法用于商业计算的精度设置问题详解
BigDecimal.setScale()方法用于商业计算的精度设置问题详解 网上的说法繁杂,看起来诸多不便,并且有的说法也不太准确,在这里 做一下求证。用的较多的4个参数:BigDecimal.ROUND_UP 这个方法做直接进位处理,但是有个特殊情况需要考虑,如果将要舍弃的位上的值是0,不做进位处理。BigDecimal.ROUND_DOWN 这个方法做直接舍弃处理BigDecimal.ROUND_HALF_UP 这个方法就是大名鼎鼎的四舍五入
BigDecimal.ROUND_HALF_DOWN 这个方法准确来说,是五舍六入
import java.math.BigDecimal;/***@author yangcq* Java常用商业计算工具类BigDecimal的精度设置方法setScale()详解**/public class BigDecimalTest {public static void main(String[] args) {bigDecimalTest();}private static void bigDecimalTest(){new BigDecimal("918.845");new BigDecimal("918.844");new BigDecimal("918.846");3);2,BigDecimal.ROUND_UP);2,BigDecimal.ROUND_DOWN);2,BigDecimal.ROUND_HALF_UP);2,BigDecimal.ROUND_HALF_DOWN);"测试数据:" + bigDecimal_01);"BigDecimal.ROUND_UP = " + bigDecimal_01.setScale(2,BigDecimal.ROUND_UP));"BigDecimal.ROUND_DOWN = " + bigDecimal_01.setScale(2,BigDecimal.ROUND_DOWN));"BigDecimal.ROUND_HALF_UP = " + bigDecimal_01.setScale(2,BigDecimal.ROUND_HALF_UP));"BigDecimal.ROUND_HALF_DOWN = " + bigDecimal_01.setScale(2,BigDecimal.ROUND_HALF_DOWN));"测试数据:" + bigDecimal_02);"BigDecimal.ROUND_UP = " + bigDecimal_02.setScale(2,BigDecimal.ROUND_UP));"BigDecimal.ROUND_DOWN = " + bigDecimal_02.setScale(2,BigDecimal.ROUND_DOWN));"BigDecimal.ROUND_HALF_UP = " + bigDecimal_02.setScale(2,BigDecimal.ROUND_HALF_UP));"BigDecimal.ROUND_HALF_DOWN = " + bigDecimal_02.setScale(2,BigDecimal.ROUND_HALF_DOWN));"测试数据:" + bigDecimal_03);"BigDecimal.ROUND_UP = " + bigDecimal_03.setScale(2,BigDecimal.ROUND_UP));"BigDecimal.ROUND_DOWN = " + bigDecimal_03.setScale(2,BigDecimal.ROUND_DOWN));"BigDecimal.ROUND_HALF_UP = " + bigDecimal_03.setScale(2,BigDecimal.ROUND_HALF_UP));"BigDecimal.ROUND_HALF_DOWN = " + bigDecimal_03.setScale(2,BigDecimal.ROUND_HALF_DOWN));// BigDecimal.ROUND_UP 这个方法做直接进位处理,但是有个特殊情况需要考虑,如果将要舍弃的位上的值是0,不做进位处理。new BigDecimal("918.850");"测试数据:" + bigDecimal_04);"BigDecimal.ROUND_UP = " + bigDecimal_04.setScale(2,BigDecimal.ROUND_UP));"BigDecimal.ROUND_DOWN = " + bigDecimal_04.setScale(2,BigDecimal.ROUND_DOWN));"BigDecimal.ROUND_HALF_UP = " + bigDecimal_04.setScale(2,BigDecimal.ROUND_HALF_UP));"BigDecimal.ROUND_HALF_DOWN = " + bigDecimal_04.setScale(2,BigDecimal.ROUND_HALF_DOWN));}}
-------------------------------------控制台输出:----------------------------------------------
测试数据:918.845BigDecimal.ROUND_UP = 918.85BigDecimal.ROUND_DOWN = 918.84BigDecimal.ROUND_HALF_UP = 918.85BigDecimal.ROUND_HALF_DOWN = 918.84测试数据:918.844BigDecimal.ROUND_UP = 918.85BigDecimal.ROUND_DOWN = 918.84BigDecimal.ROUND_HALF_UP = 918.84BigDecimal.ROUND_HALF_DOWN = 918.84测试数据:918.846BigDecimal.ROUND_UP = 918.85BigDecimal.ROUND_DOWN = 918.84BigDecimal.ROUND_HALF_UP = 918.85BigDecimal.ROUND_HALF_DOWN = 918.85测试数据:918.850BigDecimal.ROUND_UP = 918.85BigDecimal.ROUND_DOWN = 918.85BigDecimal.ROUND_HALF_UP = 918.85BigDecimal.ROUND_HALF_DOWN = 918.85
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~