如何再次将十进制数转换为十进制数?

时间:2015-03-17 02:26:03

标签: android

我正在开发一个关于某些计算的应用程序。在选项卡上我有3个edittexts。一个用于价格输入的edittext,一个用于它的百分比,最后一个用于它们的结果。但是我得到了使这些edittexts显示为货币的任务(我使用的是十进制格式)。现在我只能将结果显示为货币。价格输入也需要是十进制格式,但不知怎的,我的代码不会工作(这是一个糟糕的,非常糟糕的实现)。我们的想法是将diplayed值设为十进制格式,同时计算此值,结果也将显示在edittext结果框中。我的进一步任务是让这三个edittext自动生成,因为用户在任何地方输入值(可能只在价格edittext和百分比或结果和价格edittext上),例如:

Price edittext:
100000
Percentage
30
Result:
 this will be 30000 (auto generate itself(means it fill itself with that value))

Price edittext
100000
Percentage:
 this will be 30(auto generate itself(means it fill itself with that value))
Result
30000

我能够使用textwatcher完成第一个,这个代码:

edittextforprice.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                String text1 = edittextforprice.getText().toString();
                String text2 = percentageoftheprice.getText().toString();

                double input1 = 0;
                double input2 = 0;
                if (text1.length() > 0)

                input1 = Double.valueOf(text1);
                if (text2.length() > 0)
                    input2 = Double.valueOf(text2);
                if (text1.length() != 0) {

                    double output = (input1 * input2) / 100;
                    e = kursIndonesia.format(output);
                    outputtumbal = e;
                    edittextresult.setText("" + e);
                } else if (text2.length() == 0) {
                    edittextresult.setText("");
                }
            }

避免错误我也在textwatcher百分比上添加上面的代码,所以当用户编辑输入时,应用程序不会崩溃(例如擦除所有输入数据,或者它变为零)

这个转换器,我把它放在onCreate

final DecimalFormat kursIndonesia = (DecimalFormat) DecimalFormat
                .getCurrencyInstance();
        DecimalFormatSymbols formattedStuff = new DecimalFormatSymbols();
        formattedStuff.setCurrencySymbol("Rp. ");
        formattedStuff.setMonetaryDecimalSeparator(',');
        formattedStuff.setGroupingSeparator('.');
        kursIndonesia.setDecimalFormatSymbols(formattedStuff);

结果edittext将显示结果:

Result:
Rp. 30.000,00

是否可以使用此

final DecimalFormat kursIndonesia = (DecimalFormat) DecimalFormat
                    .getCurrencyInstance();
            DecimalFormatSymbols formattedStuff = new DecimalFormatSymbols();
            formattedStuff.setCurrencySymbol("Rp. ");
            formattedStuff.setMonetaryDecimalSeparator(',');
            formattedStuff.setGroupingSeparator('.');
            kursIndonesia.setDecimalFormatSymbols(formattedStuff);

和这个

DecimalFormat dec1 = new DecimalFormat();
dec1.setGroupingUsed(false);

在上面的textwatcher代码中我想在显示器上将给定值(用户输入)转换为十进制,但是这个值也将在上面的textwatcher中计算。我这样做了

edittextforprice.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {        
                String text1 = ethint1.getText().toString();
                    DecimalFormat kursIndonesia1 = (DecimalFormat) DecimalFormat
                            .getCurrencyInstance();
                    DecimalFormatSymbols formattedStuff1 = new DecimalFormatSymbols();
                    formattedStuff1.setCurrencySymbol("Rp. ");
                    formattedStuff1.setMonetaryDecimalSeparator(',');
                    formattedStuff1.setGroupingSeparator('.');
                    kursIndonesia1.setDecimalFormatSymbols(formattedStuff1);
                    if (text1.length() != 0) {
                        //long lol = Long.parseLong(text1);
                        e = kursIndonesia1.format(text1);
                        ethint1.setText("" + e);
                    }
                }
            }

将给定值转换为货币但不起作用,我也试过了:

edittextforprice.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                DecimalFormat dec = new DecimalFormat();
                dec.setGroupingUsed(false);
                String text1 = edittextforprice.getText().toString();
                String text2 = edittextpercentage.getText().toString();
                String a1 = null;
                double input1 = 0;
                double input2 = 0;
                if (text1.length() > 0)
                a1 = dec.format(text1);
                input1 = Double.valueOf(text1);
                if (text2.length() > 0)
                    input2 = Double.valueOf(text2);
                if (text1.length() != 0) {
                    a1 = dec.format(text1);
                input1 = Long.parseLong(a1);
                    double output = (input1 * input2) / 100;
                    e = kursIndonesia.format(output);
                    outputtumbal = e;
                    textvDP1.setText("" + e);
                } else if (text2.length() == 0) {
                    textvDP1.setText("");
                }
            }

这也不行,如何正确实现我的想法? 提前致谢

0 个答案:

没有答案