最新公告
  • 欢迎您光临欧资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 程序猿来说如下经典案例:这是、0.006、0.003、0.004

    Java 可不是小事! ! ! ! ! ! ! ! ! ! ! !

    四舍五入是我们小学的一道数学题。对于我们程序员来说,这个问题就像从1到10的加减乘除一样简单。在解释之前,我们先来看看下面的经典案例:

    public static void main(String[] args) {
            System.out.println("12.5的四舍五入值:" + Math.round(12.5));
            System.out.println("-12.5的四舍五入值:" + Math.round(-12.5));
        }
    Output:
    12.5的四舍五入值:13
    -12.5的四舍五入值:-12

    这是一个四舍五入的经典案例,也是我们参加校招时经常遇到的事情(好像参加笔试时遇到过很多次)。从这个结果我们发现这两个数字具有相同的绝对值,为什么近似值不同?事实上,这是由 Math.round 使用的舍入规则决定的。

    四舍五入实际上在金融中被大量使用,尤其是银行利息。我们都知道,银行的主要盈利渠道是息差。它从储户那里收集资金,然后将其借出。期间产生的利息差额为银行获得的利润。如果我们使用通常的取整规则,这里我们以每 10 笔存款的利息计算为模型,如下:

    圆形:0.000、0.001、0.002、0.003、 < @0.004。都是银行赚的钱。

    五个条目:0.005、0.006、0.007、0.008、 0.009。这些是银行损失的钱,分别是:0.005、0.004、.003、0.002、@ >0.001.

    所以对于银行来说,它的利润应该是 0.000 + 0.001 + 0.002 + 0.003 + 0.004 – 0.@ >005 – 0.004 – 0.003 – 0.002 – 0.001 = -0.005。从结果可以看出,每支付10笔利息,银行可能损失0.005元。不要小看这个数字。这对银行来说是一个非常大的损失。面对这个问题,出现了下面的银行家介入法。该算法由美国银行家提出,主要用于纠正上述四舍五入规则造成的误差。如下:

    当四舍五入的位数小于5时,直接四舍五入。

    当四舍五入的位数大于5时,四舍五入后进行四舍五入。

    当四舍五入的数字的值等于5时,如果5后还有其他非零值,则四舍五入后进行四舍五入。进位,四舍五入。

    以上规则我们用一个例子来说明

    11.556 = 11.56 ——六进

    11.554 = 11.55 —–四舍五入

    11.5551 = 11.56 —–向上五轮

    11.545 = 11.54 —–第五位之后有无数个数字,如果第一位是偶数,应该四舍五入

    11.555 = 11.56 —–第五位之后有无数个数字,如果第一位是奇数,应该结转

    以下示例使用银行家四舍五入:

    public static void main(String[] args) {
            BigDecimal d = new BigDecimal(100000);      //存款
            BigDecimal r = new BigDecimal(0.001875*3);   //利息
            BigDecimal i = d.multiply(r).setScale(2,RoundingMode.HALF_EVEN);     //使用银行家算法 
            
            System.out.println("季利息是:"+i);
            }
    

    js 保留2位小数 补零_js小数点保留2位四舍五入_js 强制保留2位小数

    Output: 季利息是:
    562.50

    上面简单介绍了庄家的取整方法。目前java支持7种舍入方式:

    1、 ROUND_UP:从零开始舍入。向绝对值最大的方向四舍五入,只要丢弃的位不为0,就会被携带。

    2、 ROUND_DOWN:向零舍入。在绝对值最小的方向输入,所有位都被丢弃,没有结转。

    3、 ROUND_CEILING:向正无穷大舍入。靠近正最大方向。对于正数,舍入行为类似于 ROUND_UPjs小数点保留2位四舍五入,对于负数js小数点保留2位四舍五入,舍入行为类似于 ROUND_DOWN。 Math.round() 方法使用这种模式。

    4、 ROUND_FLOOR:向负无穷大舍入。向负无穷大。对于正数,舍入行为类似于 ROUND_DOWN;对于负数,舍入行为类似于 ROUND_UP。

    5、 HALF_UP:四舍五入到最接近的数字(在 5 中)。这是我们最经典的四舍五入。

    6、 HALF_DOWN:四舍五入到最接近的数字(第 5 轮)。这里 5 被丢弃。

    7、 HAIL_EVEN:银行家的四舍五入。

    当涉及到舍入时,保留位是必不可少的。在java操作中,我们可以使用多种方式来实现保留位。

    保留位

    方法一:四舍五入

    double   f   =   111231.5585;
    BigDecimal   b   =   new   BigDecimal(f);
    

    js小数点保留2位四舍五入_js 强制保留2位小数_js 保留2位小数 补零

    double f1 = b.setScale(2, RoundingMode.HALF_UP).doubleValue();

    这里使用 BigDecimal,使用 setScale 方法设置精度,使用 RoundingMode.HALF_UP 使用四舍五入到最近位规则进行近似计算。在这里我们可以看到 BigDecimal 和四舍五入非常匹配。

    方法二:

    java.text.DecimalFormat   df   =new   java.text.DecimalFormat(”#.00″);
    df.format(你要格式化的数字);

    示例:new java.text.DecimalFormat(“#.00”).format(3.1415922、0@>

    #.00 表示小数点后两位 #.0000 小数点后四位以此类推…

    方法三:

    2、1@>

    方法四:

    另外,如果struts标签用于输出,还有一个format属性,设置为format=”0.00″保留两位小数

    例子:

    2、3@>

    不迈出一小步,就走不了千里

    没有小溪的积累,就无法造出河流或海洋。

    ——荀子的“励学”

    站内大部分资源收集于网络,若侵犯了您的合法权益,请联系我们删除!
    欧资源网 » 程序猿来说如下经典案例:这是、0.006、0.003、0.004

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    欧资源网
    一个高级程序员模板开发平台

    发表评论