Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中进行舍入时面临的问题_Java - Fatal编程技术网

在Java中进行舍入时面临的问题

在Java中进行舍入时面临的问题,java,Java,我必须在我的一个应用程序中向客户显示未来30年的基金价值,但问题是存在一些十进制值,因此我们必须对这些值进行四舍五入,以便正确计算。例如,我们有414.598940334717,它应该四舍五入到414.60,但根据电子表格,在414.61之前,它不会用这个函数进行四舍五入。 我写了这个方法 BigDecimal bd = new BigDecimal(Double.toString(414.598940334717)); bd = bd.setScale(2,BigDecimal.ROUND_

我必须在我的一个应用程序中向客户显示未来30年的基金价值,但问题是存在一些十进制值,因此我们必须对这些值进行四舍五入,以便正确计算。例如,我们有414.598940334717,它应该四舍五入到414.60,但根据电子表格,在414.61之前,它不会用这个函数进行四舍五入。 我写了这个方法

BigDecimal bd = new BigDecimal(Double.toString(414.598940334717));

bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP );
试一试


我看不出你的问题

BigDecimal bd = new BigDecimal(Double.toString(414.598940334717));    
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP );
System.out.println("" + bd);
输出

414.60

我通常的技巧是用铸造法来做这样的总结:

double d = 414.598940334717;
double rounded = (int)(d * 100 + 0.5) / 100.0;
System.out.println("" + rounded);
输出


414.6

当我尝试您的代码时,它成功运行并返回
414.60
。但是电子表格给出了414.61。您确定这是在电子表格中插入值的代码吗?你想做什么>你能简单地阐述一下你的问题吗?但是你不能总结.59到.61,它将是.60
double d = 414.598940334717;
double rounded = (int)(d * 100 + 0.5) / 100.0;
System.out.println("" + rounded);