增加和减少浮动值是不是按照我想要的方式工作?

时间:2013-11-29 10:55:59

标签: java android

我正在制作一个Android应用,其中涉及带有textview和2个按钮的xml布局文件的活动。当您按下加号按钮时,textview增加0.1,当您按下减号按钮时,textview减少0.1。所以在我的java代码中我声明了按钮和textview。我已经设置了一个名为test的变量,它等于0.0。

 float test=0.0f;

然后在我的on click语句中,我使用了加号和减号按钮的开关案例语句

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch(v.getId()){


        case R.id.increase:

            test = test+0.1f;
            temperatureTextview.setText((test)+"");
            break;
        case R.id.decrease:
            test = test-0.1f;

            temperatureTextview.setText((test)+"");
            break;
    }

应用程序工作正常并且加载正常唯一的问题是当我增加或减少到某些值而不是以我想要的方式显示textview中的0.3或1.6时,它显示0.30000000009或1.600000009。为什么它在某些数字上这样做,并且我可以在显示器上显示我想要的数字,即1.9,34.6,200.5不是1.600000003?所以换句话说到一个小数位(如果我的数学对我有用)?

2 个答案:

答案 0 :(得分:4)

您需要使用String.format:

temperatureTextView.setText(String.format("%5.1f", test));

问题是浮点运算并不完全准确,除非你只使用2的幂。说明符%5.1f告诉它给你一个浮点数,其中5个字符(包括小数)四舍五入到小数点后1位。

有关说明符语法的详细信息,请参阅here

答案 1 :(得分:0)

BigDecimal roundfinalPrice = new BigDecimal(test).setScale(2,BigDecimal.ROUND_HALF_UP);

您可以根据需要对浮点值进行舍入...