我正在编写一个测试程序来测试RoundDeMethod for BigDecimal。我对Java比较陌生(我只在这里工作了五天!!)。我在DrJava中编写了一个类来测试它,但是已经将pp指定为BigDecimal的变量,我如何将不同的RoundingMethod应用于相同的变量以获得最终结果?
import java.math.*;
import java.util.Scanner;
//import java.text.*;
//import java.util.*;
public class TestRounding{
public static void main(String args[]){
BigDecimal pp; //declare variable pp=pounds pence inp=monetary input
Scanner scan = new Scanner (System.in);
System.out.println( "ENTER POUNDS AND PENCE TO AT LEAST FIVE DECIMAL PLACES :" );
pp= scan.nextBigDecimal();
pp=pp.setScale(2,RoundingMode.HALF_EVEN);
System.out.println("HALF_EVEN: "+pp.toString());
pp=pp.setScale(2,RoundingMode.FLOOR);
System.out.println("FLOOR: "+pp.toString());
pp=pp.setScale(2,RoundingMode.CEILING);
System.out.println("CEILING: "+pp.toString());
}
}
答案 0 :(得分:0)
在更改舍入方法的代码中,您将已经舍入的值传递给下一步。例如,值被HALF_EVEN
四舍五入到两个位置,然后这个已经舍入的值(2个位置)被传递到FLOOR
步骤,依此类推。
要获得您期望的行为,请在每次调用舍入方法时创建新的BigDecimal
变量。然后,您可以继续使用每个变量的原始输入值:
BigDecimal pp1 = pp.setScale(2, RoundingMode.HALF_EVEN);
System.out.println("HALF_EVEN: "+pp1.toString());
BigDecimal pp2 = pp.setScale(2,RoundingMode.FLOOR);
System.out.println("FLOOR: "+pp2.toString());
BigDecimal pp3 = pp.setScale(2,RoundingMode.CEILING);
System.out.println("CEILING: "+pp3.toString());