zoukankan      html  css  js  c++  java
  • java中double类型显示两个小数,比如12.00

    Double类型的数据如何保留两位小数? 各位大虾,现有Double类型的数据,如何转换为保留两位小数的数,返回值的类型仍然是Double类型的,而不是字符串类型。 比如     0,返回“0.00”;
    提示:DecimalFormat       df       =       new       DecimalFormat( "#####0.00 ");                       System.out.println(df.format(d));     这段代码能够将Double类型的数据设置指保留两位,但是返回的是String类型,要让返回Double类型的,怎么办?
    ------解决方案--------------------------------------------------------
    首先你要搞明白,什么是模型,什么是展现。
    既然“客户的需求是希望能将0.0也显示为 0.00”,那么客户并没有要求说“希望0在内部保存的时候也保存为0.00”,他要的只是展现。所以,不论你存成什么样,只要你能展现的时候转成他要的格式不就行了。
    如果你希望把一个0存储成0.00的形式,那我只好告诉你,只有string和bigdecimal可以选择,绝对不可能单纯用double实现。
    对double来说,0和0.00永远是一样的。如果你要问为什么,我可以告诉你,这样表示出来的数你才会觉得比较合乎你从小接受的数的概念,否则就会有点乱套。
    如果你有兴趣,可以仔细先看bigdecimal的javadoc,由于bigdecimal能分别表示0和0.0以及0.00等等,造成一个很怪的现象,就是,在bigdecimal的表示下:0.equals(0.0) 以及 0.equals(0.00) 都会返回假;同时,0.compareTo(0.0) 以及 0.compareTo(0.00) 却都会返回0。 BigDecimal rateDecimal = new BigDecimal(12);//12是一个double类型

    BigDecimal  num=rateDecimal.setScale(1, BigDecimal.ROUND_HALF_UP);

    num是12.00;用BigDecimal来帮助显示后面的零

     

    ROUND_CEILING  大于等于该数的那个最近值
    ROUND_DOWN  正数是小于等于该数的那个最近数,负数是大于等于该数的那个最近数
    ROUND_FLOOR  小于等于该数的那个值
    ROUND_HALF_DOWN  五舍六入
    ROUND_HALF_EVEN  向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP ,如果是偶数,使用ROUND_HALF_DOWN 
    ROUND_HALF_UP  四舍五入
    ROUND_UNNECESSARY  计算结果是精确的,不需要舍入模式 
    ROUND_UP  和ROUND_DOWN相反
  • 相关阅读:
    第01组 Beta版本演示
    2019 SDN上机第7次作业
    第01组 Beta冲刺(4/4)
    系统综合实践第6次作业
    系统综合实践第5次作业
    系统综合实践第4次作业
    系统综合实践第3次作业
    系统综合实践第2次作业
    系统综合实践第1次作业
    软工实践个人总结
  • 原文地址:https://www.cnblogs.com/firstdream/p/8461393.html
Copyright © 2011-2022 走看看