为了账号安全,请及时绑定邮箱和手机立即绑定

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

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 回答

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

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

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

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

请看下面

http://img1.sycdn.imooc.com//5874c8cd0001a84103340151.jpg

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

http://img1.sycdn.imooc.com//5874c9180001231e03300146.jpg

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android攻城狮的第二门课(第2季)
  • 参与学习       62396    人
  • 解答问题       207    个

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

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信