zoukankan      html  css  js  c++  java
  • java中double变量保留小数问题

    http://blog.sina.com.cn/s/blog_8579012301014tku.html

    做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结:  

    java中double类型变量保留小数问题大体分两种情况:

    (一):小数点后面位数过长,四舍五入保留指定位数:

    可以用以下代码实现:

    public class TestDemo {
     public static void main(String[] args) {
         double a=15.32743859;
         double b=Math.round(a*10000)/10000.0000;//保留四位小数
         System.out.println(b); 
     }
    }

    想保留n位小数,就Math.round(a*10的n次方)/10的n次方.n个0。

    (二):如果小数点后末位为0,myeclipse中不予显示,如

          double a=15.80;
          System.out.print(a);

    则在控制台中输出的结果是15.8。

    而我们有时候希望把百分位的0也显示出来,比如说显示商品价格,一般是显示两位小数,如果商品价格是15.8,也显示为15.80,如果商品价格是15,也显示为15.00,这种情况,用(一)中的方法便无法实现了,那应该如何实现呢?

    请看下面代码:

    import java.text.DecimalFormat;

    public class TestDemo {
     public static void main(String[] args) {
      DecimalFormat df =new DecimalFormat("#####0.00");
         double a=15;
         System.out.println(df.format(a)); 
     }
    }

        这样,即使在我们的double类型变量是15,显示出来的也是15.00。当然,我们希望显示多少位就在"#####0.00"的点后面去控制0的个数 便可以。如果是"#####0"的话,那我们的double变量无论是15.0或是15.00都能显示成15,而如果我们的double变量是 15.60,则显示为16,即这种方法也可以实现四舍五入。它包含了(一)的功能,所以我们遇到两种情况都可以选择这种方法。

         后 记:我在做u1项目超市收银管理系统的时候便遇到了这个问题。在后期的测试完善阶段,我发现出现项目中商品价格的地方一般都显示为一位小数,而实际生活中 一般是保留两位小数。于是乎苦心修改:不断调整xml中的数值、给double变量赋初值0.00、用Math.round()......等等等等,不 胜枚举,都没有达到预期的效果,弄得自己丈二和尚摸不着头脑。老师的“进行特殊处理”的关键提示指引着我继续寻找问题的答案,花了大半天的时间才解决。说 起来本周都成了"bug"周了,各种不顺,各种调试,真是举步维艰。然而尽管如此,我还是相信:不要怕错误,不要怕问题,要在痛苦解决问题的过程中增加经 验值。柳暗花明也许就在山穷水尽之后。

  • 相关阅读:
    【Java Web】使用URLRewrite实现网站伪静态
    Jsp的include指令静态导入和动态导入的区别
    JSP中使用cookie存储中文
    【转】android加载大量图片内存溢出的三种解决办法
    Android调整TimePicker和DatePicker大小
    使用WebClient实现通讯(Silverlight学习笔记)
    Silverlight 用户控件与自定义控件详解
    利用WebClient和WebRequest类获得网页源代码
    Silverlight中的对象序列化/反序列化
    Flex与FLASH区别及Flex动画效果学习
  • 原文地址:https://www.cnblogs.com/PheonixHkbxoic/p/5715332.html
Copyright © 2011-2022 走看看