2012-08-12 57 views
1

嗨,我想這樣的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()); 
     } 
    }); 

} 

} 
+0

您必須使用浮點數進行算術運算,然後使用'DecimalFormat'格式化結果,以保持所需的精度。 – neevek 2012-08-12 16:14:18

回答

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貨幣的小數位數。

+0

非常感謝你的快速答案:D – user1475475 2012-08-12 16:17:27

1

您的mgs變量是一個Integer對象。將其設置爲輸入float以顯示小數位數。

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

我希望這會有所幫助。