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

整数转double精度问题
我现在有一个函数
public   double   round(double   num){
                ...
return   num;
}
当num=10.01时候返回值是10.01,可是当num=10或者num=10.00时候返回值就是10.0了,现在怎么能函数的返回值是double类型的情况下返回值是10.00?
不要告诉我用java.text.NumberFormat,ava.text.DecimalFormat这个是可以格式化,比java.text.DecimalFormat   myformat=new   java.text.DecimalFormat( "#0.00 ");
System.out.println(myformat.format(num)   +   ", "   +   Double.parseDouble(myformat.format(num))   +   ", "   +   num);但是返回值是字符串的,我就想要返回值是double的。也试过BigDecimal也不行,速求解决方案!


------解决方案--------------------
返回 10.0 和 10.00 是同一个数字,精度是完全相同的,只是显示的出来格式不同而已,一个只不过被你格式化输出了,而另一个则是默认格式输出了。
------解决方案--------------------
楼上说得对阿。转成字符串的才是王道,精度没有区别。10.0与10.00的区别是他的表现,不是存储。只是表现出来让人看。10.0与10.00又有什么区别
------解决方案--------------------
如果你不喜欢这样就只能用format 如果还不喜欢的话 建议楼主去砍sun公司的负责人,叫他们制定新的规范
------解决方案--------------------


同意1楼!
------解决方案--------------------
学习
------解决方案--------------------
学习
------解决方案--------------------
学习
------解决方案--------------------
在计算机表示数字10.00和10.0是不一样的,它们精度不同,但是显示时肯定只能显示10.0;因为显示10.00是没有意义的(小数点后只能显示0.0的形式,10.00这种数字形式在java中是不允许的),除非String格式化。