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相反 |
java中double类型显示两个小数,比如12.00的更多相关文章
- Java中double类型的数据精确到小数点后两位
Java中double类型的数据精确到小数点后两位 多余位四舍五入,四种方法 一: double f = 111231.5585;BigDecimal b = new BigDecimal(f); d ...
- java double类型保留两位小数4种方法【转】
4种方法,都是四舍五入,例: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberF ...
- JavaScript中Float类型保留两位小数
JavaScript中Float类型保留两位小数 核心方法: num:要操作的数字 size:要保留的位数 parseFloat(num).toFixed(size); 实现代码如下:var ...
- java double类型保留两位小数4种方法
http://blog.csdn.net/huaishuming/article/details/17752365 ****************************************** ...
- 关于java中Double类型的运算精度问题
标题 在Java中实现浮点数的精确计算 AYellow(原作) 修改 关键字 Java 浮点数 精确计算 问题的提出:如果我们编译运行下面这个程序会看到什么?publi ...
- 关于java中Double类型的运算精度问题(转)
Java Java double:浮点数:精确计算 public class Test{ public static void main(String args[]){ Syst ...
- Java中Double类型计算问题
public class Test{ public static void main(String args[]){ System.out.println(0.05+0.01); ...
- JAVA中double类型运算结果异常的解决
问题: 对两个double类型的值进行运算,有时会出现结果值异常的问题.比如: System.out.println(19.99+20); System.out.println(1.0-0.66); ...
- 如何使java中double类型不以科学计数法表示
在java中,把一个double或者BigDecimal的小数转换为字符串时,经常会用科学计数法表示,而我们一般不想使用科学计数法,可以通过:DecimalFormat a = new Decimal ...
随机推荐
- oracle12c之四 控制PDB操作 PDBLockdown Profiles
除了IO.内存.CPU之外,还有一些限制,比如:限制在pdb中的操作命令,我们可以创建一个lockdown profile来限制对当前PDB的操作,增强某些操作的安全性. 关于PDB Lockdo ...
- 时钟时间,系统cpu时间,用户cpu时间
进程的3种状态:阻塞,就绪,运行 度量一个进程的执行时间,unix为进程维护了3个时间,即时钟时间,用户CPU时间,系统CPU时间. 时钟时间又被称为墙上时钟时间,wall clock tim ...
- Java/Android 网络请求框架/库
Android 图片缓存框架 最上面的最优先 com.facebook.fresco:fresco:0.12.0 7.26.2016最新 Universal-Image ...
- Ubuntu 18.04上搭建FTP服务器
1.准备工作需要安装并运行的Ubuntu Server 18.04系统.当然还需要一个具有sudo权限的账号. 2.安装VSFTPVSFTP程序位于标准存储库中,因此可以使用单个命令删除安装.打开终端 ...
- springboot和quartz整合分布式多节点
虽然单个Quartz实例能给予我们很好的任务job调度能力,但它不能满足典型的企业需求,如可伸缩性.高可靠性满足.假如你需要故障转移的能力并能运行日益增多的 Job,Quartz集群势必成为你应用的一 ...
- oracle10g获取Date类型字段无时分秒解决办法!
一般的数据库中,DATE字段仅仅表示日期,不包括日期信息,而Oracle数据库中的DATE数据类型是包括日期.时间的,对于不同的Oracle jdbc驱动版本,对于该问题的处理都有些区别. 最近使用 ...
- MySQL更改字段名
更改字段名 alter table tb_name change col_name new_col_name create_definition;
- 纯Python给ulaw wav文件加头
最近在处理wav相关文件,碰见一工具产生的ualw文件不带header,顺手用python给wav格式文件加头处理,让普通播放器也能播放. (原文:http://www.cnblogs.com/ryh ...
- MyBatis整合Spring详细教程
1整合思路 1.SqlSessionFactory对象应该放到spring容器中作为单例存在. 2.传统dao的开发方式中,应该从spring容器中获得sqlsession对象. 3.Mapper代理 ...
- oracle系统包——DBMS_PIPE用法
DBMS_PIPE包用于在同一例程(实例)的不同会话之间进行通信:注意,如果用户要执行包dbms_pipe中的过程和函数,则必须要为用户授权. sql>conn sys/oracle as sy ...