0

全部-我很难获取 EditText 的值并将其弄乱以执行方程式和诸如舍入和乘法之类的任务。我听说 BigDecimal 是一种很好的方法,但是很难将变量转换为可以成为 BigDecimal 变量的类型(View->String->Float->BigDecimal),然后再将它们转换为一种类型它们可以在哪里输出(BigDecimal->?)。这是我的代码:

 public class TippingActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    public void calculateNumbers(View view) throws ParseException {
        // Bill
        EditText text = (EditText)findViewById(R.id.edit_bill);             
        String value;
        value = text.getText().toString();
        float bill = Float.parseFloat(value);       
        BigDecimal billbd;
        billbd = new BigDecimal(bill);


        //Tip
        EditText text2 = (EditText)findViewById(R.id.edit_tip);
        String value2;
        value2 = text2.getText().toString();    
        if(!value2.contains("."))
            value2 = "."+value2;
        float tip = Float.parseFloat(value2);
        BigDecimal tipbd;
        tipbd = new BigDecimal(tip);

        //People
        EditText text3 = (EditText)findViewById(R.id.edit_people);
        String value3;
        value3 = text3.getText().toString();
        float people = Float.parseFloat(value3);
        BigDecimal peoplebd;
        peoplebd = new BigDecimal(people);
        //Answer
        TextView answer = (TextView) findViewById(R.id.answer);
        //Answer to string
        String answerstring;
        answerstring = answer.getText().toString();
        //Answer to Float
        float answerfloat = Float.parseFloat(answerstring);
        //Answer to BigDecimal
        BigDecimal answerbig;
        answerbig = new BigDecimal(answerfloat);
        answerbig.setScale(2, RoundingMode.HALF_UP);
        answerbig = billbd.multiply(tipbd).add(billbd).divide(peoplebd);
        //Answer to String
        String answerfrombd = answerbig.getText().toString();        
        answer.setText(answerfrombd);       
    }
}

在底部的第二行代码中,我得到一个错误

`String answerfrombd = answerbig.getText().toString();`

因为我不能从 BigDecimal 转到 String。有任何想法吗?提前致谢!

4

1 回答 1

0

您可以这样做,具体取决于您希望它如何显示。

answerbig.toPlainString() 

或者:

answerbig.toBigInteger().toString()
于 2012-06-02T00:33:54.873 回答