1

こんにちは、TextView レベルで 10 進数を出力できるようにしたいのですが、その方法がわかりません。今は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());
        }
    });

}

}
4

2 に答える 2

1

あなたのmgs変数は整数オブジェクトです。float 型に設定すると、小数点以下の桁数が表示されます。

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

これが役立つことを願っています。

于 2012-08-12T16:13:05.070 に答える
0

int除算は のみを生成しintます。出力を offloatまたはdoubletype にしたい場合は、doubleまたはfloat除算を使用する必要があります。

Double mgs;

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

式で考慮されるすべての変数が である必要はdoubleなく、そのうちの 1 つだけであることに注意してください。

ここで注目すべきもう 1 つのことは、小数点以下 2 桁が必要かどうかです (ここでは通貨を想定しています)。デフォルトでは、Java/Android は小数点以下の桁数を必要なだけ出力します。 1.80として表示され1.8ます。これを軽減するには、デフォルトの通貨の小数点以下の桁数を指定できるようにNumberFormat(具体的には を使用) を使用する必要があります。NumberFormat.getCurrencyInstance()Locale

于 2012-08-12T16:13:34.057 に答える