0

坚持这一点,我确信有一个简单的解决方案,只是无法解决!

我尝试过 decmialformat、numberformat、string.format() 等,但没有任何效果。.

下面的代码,我想计算只显示限制为 2 位小数的输出。在过去的 2 个小时里尝试了各种方法,所有这些方法都会导致应用程序在运行时崩溃......

    Output = (Output1 / (1 -(Output2/100)))

    String OutputString = String.valueOf(Output);

    Num.setText(OutputString);
4

3 回答 3

1

试试这个 :

String OutputString = String.format("%.2f", Output);

Num.setText(OutputString);

String.format()以确保您的输出中只有 2 位小数。

于 2013-01-29T19:08:14.273 回答
0

请试试这个:

double Output = (Output1 / (1 -(Output2/100d)))
Num.setText(String.format("%.2f",Output));

希望这能解决您的问题。最好的祝福

于 2013-01-29T19:11:10.000 回答
0

如果你想限制'decimal_point'之前和之后的位数,那么你可以使用我的解决方案。

private class DecimalNumberFormatTextWatcher implements TextWatcher{
    int pos;
    int digitsBeforeDecimal = 6;
    int digitsAfterDecimal = 2;
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        if(s.length() > 2)
            pos = start;
        else {
            pos = start + 2;
        }
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        mEdittext.removeTextChangedListener(this);
        String text = s.toString();
        if(text!= null && !text.equals("")){
            if(!text.contains("$")){ //if it does not contains $
                text = "$"+text;
            } else {
                if (text.indexOf("$") > 0) { //user entered value before $
                    text = s.delete(0, text.indexOf("$")).toString();
                }else {
                    if(!text.contains(".")){ // not a fractional value
                        if(text.length() > digitsBeforeDecimal+1) { //cannot be more than 6 digits
                            text = s.delete(pos, pos+1).toString();
                        }
                    } else { //a fractional value
                        if(text.indexOf(".") - text.indexOf("$") > digitsBeforeDecimal+1){ //non fractional part cannot be more than 6
                            text = s.delete(pos,pos+1).toString();
                        }
                        if((text.length() - text.indexOf(".")) > digitsAfterDecimal+1) { //fractinal part cannot be more than 2 digits
                            text = s.delete(text.indexOf(".") + 2, text.length() - 1).toString();
                        }
                    }
                }
            }
        }
        mEdittext.setText(text);
        mEdittext.setSelection(pos);
        mEdittext.addTextChangedListener(this);
    }
}

mEdittext.addTextChangedListener(new DecimalNumberFormatTextWatcher());

一旦用户键入值,这也会添加货币符号。

希望这对任何人都有帮助。

于 2017-02-03T09:22:06.323 回答