使用textview显示小数

时间:2012-08-12 16:09:38

标签: android textview decimal

嗨我想要make所以TextView级别可以输出小数但我不知道如何做任何一个有想法?不,它只推出1但我希望它推出1.80。 :)

public class Main extends Activity {

int counter;
EditText weight, hours;
TextView amount, level;
Button calcuate;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    counter = 0;
    weight = (EditText) findViewById(R.id.weight);
    hours = (EditText) findViewById(R.id.hours);
    amount = (TextView) findViewById(R.id.amount);
    level = (TextView) findViewById(R.id.alcohol_level);
    calcuate = (Button) findViewById(R.id.calcuate);


    final String widmark = getResources().getString(
            R.string.widmark);
    final String hundra = getResources().getString(
            R.string.hundra);
    final String cl = getResources().getString(
            R.string.cl);

    calcuate.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Integer wid, mgs;

            String w = weight.getText().toString();
            String h = hours.getText().toString();

            wid = Integer.parseInt(w) * Integer.parseInt(widmark) / Integer.parseInt(hundra);
            mgs = Integer.parseInt(cl) / Integer.parseInt(wid.toString()) / Integer.parseInt(hundra);

            level.setText(mgs.toString());
        }
    });

}

}

2 个答案:

答案 0 :(得分:1)

您的mgs变量是一个Integer对象。将其设置为float类型以显示小数位。

float mgs = Integer.parseInt(cl) / Integer.parseInt(wid.toString()) / Integer.parseInt(hundra);

我希望这会有所帮助。

答案 1 :(得分:0)

int除法只生成int个。如果您希望输出为floatdouble类型,则必须使用doublefloat除法。

Double mgs;

mgs = Double.parseDouble(cl) / Double.parseDouble(wid.toString()) / Double.parseDouble(hundra);

请注意,并非所有在表达式中考虑的变量都需要double,只有其中一个变量。

另一件值得注意的事情是你是否想要两个小数位(假设这里有一个货币)。默认情况下,Java / Android只会根据需要吐出尽可能多的小数位。 1.80将显示为1.8。为了缓解这种情况,您应该使用NumberFormat(具体而言,使用NumberFormat.getCurrencyInstance()),以便您可以指定您希望默认Locale货币的小数位数。