(转载自玄影池扁舟)

做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中double变量保留小数问题的更多相关文章

  1. Java中double变量精确到小数点后几(2)位

    import java.math.BigDecimal; import java.text.NumberFormat; public class Java中double类型的数据精确到小数点后两位 { ...

  2. Java中double类型的数据精确到小数点后两位

    Java中double类型的数据精确到小数点后两位 多余位四舍五入,四种方法 一: double f = 111231.5585;BigDecimal b = new BigDecimal(f); d ...

  3. Java中的变量与变量的作用域

    关于Java中的变量及变量的作用域 关于Java中的变量及变量的作用域 0. 变量的概念 在程序运行期间,系统可以为程序分配一块内存单元,用来存储各种类型的数据.系统分配的内存单元要使用一个标记符来标 ...

  4. java中的变量和数据类型

    变量和javascript的变量含义一样 在Java中,变量分为两种:基本类型的变量和引用类型的变量.(javascript中同样是这样的) 基本数据类型 基本数据类型是CPU可以直接进行运算的类型. ...

  5. java中打印变量地址

    在java中打印变量的地址 这个代码是在startoverflow上看到的,跟大家分享一下. import sun.misc.Unsafe; import java.lang.reflect.Fiel ...

  6. java中static变量和方法的总结

    转自:http://blog.csdn.net/haobo920/article/details/5921621 java中static变量和方法的总结 java中一切皆是对象 一个类中对象的定义一般 ...

  7. Java中静态变量与实例变量

    知识回顾 上一篇总结了java中成员变量和局部变量的区别,这一篇将总结静态变量和实例变量的一些特性和区别. 示例代码 package Variable; public class VariableDe ...

  8. Java中关于变量的几种情况

    Java中关于变量的几种情况 1.继承时变量的引用关系 class Animals { int age = 10; void enjoy() { System.out.println("An ...

  9. Java中静态变量的声明位置

    Java中静态变量只能是成员变量,局部方法中的局部变量除final外不能有任何其他修饰符,例如: public class Test { static String x = "1" ...

随机推荐

  1. JS function

    JS函数的定义 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. JS函数的声明 function functionname(){语句} 注意:function必须是小写,否则会报错. J ...

  2. VFP 祺佑三层开发框架快速开发 演示DEMO

    祺佑三层开发框架快速开发  演示DEMO单表增删查改 链接:http://pan.baidu.com/s/1ntHXTXn 密码:wiwb 主从分离更新链接:http://pan.baidu.com/ ...

  3. OpenGL ES crash notes 01 - Nice to meet you

    这篇笔记完全参照<OpenGL.ES.3.0.Programming.Guide.2nd.Edition>,摘出部分内容只为学习参考. 为什么要用英文:无论是D3D的SDK还是OES的Sp ...

  4. OAF 中的EO 和VO

    EO :oracle.apps.fnd.framework.server.OAEntityImpl VO:oracle.apps.fnd.framework.server.OAViewRowImpl ...

  5. jquery实现淡入淡出

    fade方法包括四个: (1)fadeIn(speed,callback):淡入的方法,speed代表淡入的速度,可以是slow,fast,毫秒,不填等 例如: $(document).ready(f ...

  6. C语言 断言 总结

    转载: http://wenda.so.com/q/1378817559065638?src=140 assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止 ...

  7. 利用Native Client OLEDB 11 高效率地对SQL SERVER 进行查询和插入操作

    前言: 鄙司原始用的都是ADO来访问数据库,而我现在着手的项目是从我的GPS历史数据库中,取出历时数据的一个接口,一个DLL.用ADO写完之后,测试下来,平均4000条的数据,需要 180 毫秒左右. ...

  8. DataRead 和DataSet区别

    dataset表示一个数据集,是数据在内存中的缓存. 可以包括多个表DatSet 连接数据库时是非面向连接的.把表全部读到Sql中的缓冲池,并断开于数据库的连接 datareader 连接数据库时是面 ...

  9. js 两数相减

    var SecondPrice = document.getElementById("txtSecondPrice");  //秒杀价            var MarketP ...

  10. WCF use ProtoBuf

    ProtoBuf, 比起xml和json, 传输的数据里面没有自描述标签, 而且是基于二进制的, 所以有着超高的传输效率, 据牛人张善友的描述, 可以替代WCF的自带的编码方案, 效率有极大的提升. ...