使用edittext输出为什么结果有问题?

来源:1-5 总结

你这坏孩子

2017-01-04 20:20

private RadioButton radio1,radio2;
private Button button;
private TextView text;
    private RadioGroup rg;
    private EditText edit;
    private String str,cal;
    private double mon;
    private int choose;
   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        radio1 = (RadioButton) findViewById(R.id.r1);
        radio2 = (RadioButton) findViewById(R.id.r2);
        button = (Button) findViewById(R.id.but);
        rg = (RadioGroup) findViewById(R.id.rg);
        text = (TextView) findViewById(R.id.tv);
        edit = (EditText) findViewById(R.id.et);
       
       
        rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {

if(R.id.r1==checkedId){
Toast tot1=Toast.makeText(MainActivity.this, "请输入vip顾客金额", Toast.LENGTH_SHORT);
tot1.setGravity(Gravity.CENTER, 0, 0);
tot1.show();
choose = 1;
cal = radio1.getText().toString();
   
}else if(R.id.r2==checkedId){
str=edit.getText().toString();
Toast tot = Toast.makeText(MainActivity.this, "请输入普通顾客金额", Toast.LENGTH_SHORT);
tot.setGravity(Gravity.CENTER, 0, 0);
tot.show();
choose = 2;
cal = radio2.getText().toString();
}
}
});
        button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
str = edit.getText().toString();
if(choose == 1){
mon = Double.parseDouble(str)*0.8;
}else if(choose == 2){
mon = Double.parseDouble(str);
}
text.setText("类别:"+ cal +"顾客    "+" 金额:"+mon);
}
});
    }
    586ce8590001e60e03930345.jpg
586ce86b0001109604080373.jpg
586ce8760001931b03970352.jpg
586ce8840001684904120394.jpg
586ce88c00019b3d04030416.jpg

写回答 关注

1回答

  • 慕盖茨4755631
    2017-01-10 19:45:20

    因为double是浮点型啊,所以后来会以科学计数法的方式显示,你可以设置格式

    DecimalFormat decimalFormat = new DecimalFormat("#,####.00");//格式化设置          

    text.setText("类别:"+ cal +"顾客    "+" 金额:"+decimalFormat.format(mon));

    这样就不会以科学计数法的方式显示了,但是,如果输入数值过大,还是会丢失精度

    请看下面

    http://img.mukewang.com/5874c8cd0001a84103340151.jpg

    这个精度还是对的,但是如果再加大,就会丢失了

    http://img.mukewang.com/5874c9180001231e03300146.jpg

    这张图我有多输入了一个1,结果金额中个位为0,丢失了精度

Android攻城狮的第二门课(第2季)

本课程讲带你熟悉Android开发中常用的调试方式,菜单、调试程序

62374 学习 · 217 问题

查看课程