首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

关于java四舍五入的有关问题

2012-08-24 
关于java四舍五入的问题之前碰到一个java四舍五入的问题,这个问题一直没有找到好的答案,今天总算弄明白了。

关于java四舍五入的问题
之前碰到一个java四舍五入的问题,这个问题一直没有找到好的答案,今天总算弄明白了。
问题如下:
double f1 = new BigDecimal(0.00251231212).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();
或者
double f1 = new BigDecimal(“0.00251231212”).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue();

f1的输出结果是:0.0030
请问为什么不是0.003?有什么办法使其返回的结果是0.003?

回答:当输出f1的时候,print方法会调用String.valueof(Double x), 实际上都是转成string了,所以理论上不是string的对象,打印都要格式化,除非你不在乎。
可以如此格式化:
System.out.println(MessageFormat.format("{0,number,#.###}",f1));

精度问题可以运行如下代码:
        double val = 0;
        for (int i = 0; i < 10; i++) {
            val += 0.1;
            System.out.println(val);
        }

热点排行