日期:2014-05-20  浏览次数:20790 次

Double类型的数据如何保留两位小数?
各位大虾,现有Double类型的数据,如何转换为保留两位小数的数,返回值的类型仍然是Double类型的,而不是字符串类型。
比如     0,返回“0.00”;

提示:DecimalFormat       df       =       new       DecimalFormat( "#####0.00 ");      
                System.out.println(df.format(d));    
这段代码能够将Double类型的数据设置指保留两位,但是返回的是String类型,要让返回Double类型的,怎么办?

------解决方案--------------------
TO: foxpeople007()

首先你要搞明白,什么是模型,什么是展现。

既然“客户的需求是希望能将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。

如果你不得不在你的模型里用string表示0.00,但你想转回为double类型的0参与运算,那么,楼上的已经给出了方法:Double.parseDouble(String)。