来自不同java计算的舍入结果

来自不同java计算的舍入结果,java,android,calculation,Java,Android,Calculation,下面的代码根据用户输入进行一些计算,然后在文本视图中显示结果 public class DescentCalculator extends AppCompatActivity { EditText num1, num2, num3; TextView resu; double startdecent; double feetminute; @Override public void onCreate ( Bundle savedInstanceState ) { super.onCr

下面的代码根据用户输入进行一些计算,然后在文本视图中显示结果

public class DescentCalculator extends AppCompatActivity {

EditText num1, num2, num3;
TextView resu;
double startdecent;
double feetminute;

@Override
public void onCreate ( Bundle savedInstanceState ) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.descent);

    Toolbar mToolbar = (Toolbar) findViewById(R.id.mtoolbar);
    setSupportActionBar(mToolbar);

    Button add = (Button) findViewById(R.id.button11);
    num1 = (EditText) findViewById(R.id.altitude_fix);
    num2 = (EditText) findViewById(R.id.altitude_cruise);
    num3 = (EditText) findViewById(R.id.mach_speed);
    resu = (TextView) findViewById(R.id.answer);

    add.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick ( View v ) {
            // TODO Auto-generated method stub

            String altfix = num1.getText().toString();
            String altcruise = num2.getText().toString();
            String machspeed = num3.getText().toString();


            startdecent = (Double.parseDouble(altcruise) - Double.parseDouble(altfix)) / 100 / 3;

            feetminute = (3 * Double.parseDouble(machspeed) * 1000);

            resu.setText(Double.toString(startdecent) + Double.toString(feetminute));


        }

    });
}
例如,如果用户在altcruise中输入7000,在altfix中输入6000,在machspeed中输入0.30,则应用程序会将答案计算为3.33335899.9999999,这在技术上是正确的。我希望应用程序将答案汇总,并在本例中显示3.3。

查看此答案:

此代码段接收一个double并将其读入一个BigDecimal,然后用n个小数点对其进行四舍五入,返回一个double

public static void main(String[] args){

    double myDouble = 3.2314112;

    System.out.print(round(n,1));

}

public static double round(double value, int places) {
    if (places < 0) throw new IllegalArgumentException();

    BigDecimal bd = new BigDecimal(value);
    bd = bd.setScale(places, RoundingMode.HALF_UP);
    return bd.doubleValue();
}
publicstaticvoidmain(字符串[]args){
double myDouble=3.2314112;
系统输出打印(圆形(n,1));
}
公共静态双循环(双值,整数位){
如果(位置<0)抛出新的IllegalArgumentException();
BigDecimal bd=新的BigDecimal(值);
bd=bd.setScale(位置,舍入模式,向上舍入);
返回bd.doubleValue();
}

这将返回3.2

可能重复的@DawoodibnKareem已经尝试过了,但它不起作用……你喜欢“round”、“ceil”、“floor”还是只截断小数?@Simon我更喜欢“round”,你说你尝试了
resu.setText(新的小数格式(“#0.0”).format(startdecent))
,但不起作用?为什么它不能给你想要的?