2011-03-07 6 views
0

私は現在Android用のアプリを開発中です。このアプリでは、計算された数値をパーセンテージに変換する必要があります。元の数値(tipTotal)は正しく計算されますが、100で割ることによって10進数に変換しようとすると(tipPercentage)、tipPercentageは常に0.0になります。値を10進数に変換する問題Java(Android)

私は、tipTotalが正しいこと、そして私が期待していることを確認しました。

public void onClick(View view) { 
      int tipTotal = 0; 
      float totalBill = 0; 
      float tipPercentage = 0;     
      String time, attitude, refills, clearing, accuracy, bill; 

      time = timeSpinner.getSelectedItem().toString(); 
      attitude = attitudeSpinner.getSelectedItem().toString(); 
      refills = refillsSpinner.getSelectedItem().toString(); 
      clearing = clearingSpinner.getSelectedItem().toString(); 
      accuracy = accuracySpinner.getSelectedItem().toString(); 
      bill = txtBill.getText().toString(); 

      tipTotal = Integer.parseInt(time)+Integer.parseInt(attitude)+Integer.parseInt(refills)+Integer.parseInt(clearing)+Integer.parseInt(accuracy); 

      tipPercentage = tipTotal/100; 

      Context context = getApplicationContext(); 
      int duration = Toast.LENGTH_LONG; 
      Toast toast = Toast.makeText(context, String.valueOf(tipPercentage), duration); 
      toast.show(); 

     } 

ありがとうございました!

答えて

4

これを試してみてください:

tipPercentage = ((float)tipTotal)/ 100f; 

問題はtipTotal/100は何の小数部を持たない整数の除算を...やっているということ、そしてのために...どのように機能するかを整数部門だ1未満である可能性があり例:10/6 = 1。一方、10f/6f=1.6666

+0

こんにちはみんなをチェックアウトするより良い理解を得るために、私は合計noobのミスを作りましたよ!私はよく知っていたはずです。ありがとう! – plumwd

+0

しかし、ユーザーが「25.6」または「0.256」または「.256」を入力し、「0.256」にしたい場合はどうなりますか? – tricknology

0

tipTotal/100はあなたのケースでだから、これを解決する一つの方法は次のようになり、その後float 0.0

にキャストを入力しているint 0を返却しているようだ整数の除算、であるので、私は二クリスティアンの回答が、それはほぼ確実ですよCristianの提案を受けて、2つのフロートの強制分割。

もう1つの方法は、100が自動的にフロートに昇格するため、をfloat tipTotal = 0;と宣言することです。

EDIT:あなたは正しかったhttp://mindprod.com/jgloss/division.html

関連する問題