如何在java中将货币四舍五入到最接近的50美分?

时间:2014-12-17 15:46:04

标签: java android decimal currency

我创建了一个简单的Android货币转换器应用程序,用户输入欧元值,转换后的价格以其他货币显示。 但是如何将数字四舍五入到最接近的50美分?所以,如果1欧元等于1.3395美元,我如何让应用程序显示1.50美元?

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final EditText editEuro = (EditText) findViewById(R.id.editEuro);
        final EditText editAud = (EditText) findViewById(R.id.editAud);
        final EditText editCad = (EditText) findViewById(R.id.editCad);
        final EditText editNzd = (EditText) findViewById(R.id.editNzd);
        final EditText editGbp = (EditText) findViewById(R.id.editGbp);
        final EditText editUsd = (EditText) findViewById(R.id.editUsd);

        Button buttonConvert = (Button)findViewById(R.id.buttonConvert);

        buttonConvert.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                double euro = Double.valueOf( editEuro.getText().toString());

                double aud = euro *  1.4471 ;
                double cad = euro *  1.4635 ;
                double nzd = euro *  1.5835 ;
                double gbp = euro *  0.7965 ;
                double usd = euro *  1.3395 ;

                editAud.setText(String.valueOf(aud));
                editCad.setText(String.valueOf(cad));
                editNzd.setText(String.valueOf(nzd));
                editGbp.setText(String.valueOf(gbp));
                editUsd.setText(String.valueOf(usd));

            }
        });
    }

2 个答案:

答案 0 :(得分:3)

这样的事情有代码片段。

double value = 1.3395; // your value
double roundTo = 0.5; // number that you round to

value = roundTo * Math.round(value / roundTo);

答案 1 :(得分:0)

一种方法是将输入乘以2,将其舍入为零小数位,然后除以2.

如果你的舍入函数返回一个整数类型,那么注意不要除以整数字面,否则除法将在整数算术中进行,你将失去任何分数。将最终结果乘以0.5而不是除以2将绕过这一点。