【问题标题】:Rounding results from different java calculations来自不同 java 计算的舍入结果
【发布时间】:2017-05-28 20:54:32
【问题描述】:

所以我得到了以下代码,它根据用户输入进行一些计算,然后在 textView 中显示结果。

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.33333333333335899.999999999,这在技术上是正确的。在这种情况下,我希望应用程序汇总答案并显示 3.3。

【问题讨论】:

  • @DawoodibnKareem 已经尝试过了,但它不起作用......
  • 您喜欢“round”、“ceil”、“floor”还是只截断小数?
  • @Simon 我更喜欢“圆形”
  • 你说你试过resu.setText(new DecimalFormat("#0.0").format(startdecent))但没用?为什么它不能给你你想要的?

标签: java android calculation


【解决方案1】:

看看这个答案:Round a double to 2 decimal places

此代码 sn-p 接受一个双精度并将其读入 BigDecimal 并将其四舍五入返回一个带 n 个小数位的双精度。

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();
}

这将返回 3.2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-02
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多