2012-07-27 81 views
2

我遇到了一個與我的程序有關的問題,我的textveiw不會顯示任何小數,繼承人發生了什麼事情。用戶在textEdit中輸入一個數字(我怎麼讓文本編輯器只接受數字和一個小數點?)這個數字被轉換爲一個int,發送給我的第二個活動,被3600潛入,然後顯示在textveiw框中。問題是,當這個數字顯示時,它沒有小數值,例如,如果它小於1它不會顯示任何東西,我怎麼能解決這個問題?我需要它至少去第1000個地方。 這裏是我的代碼一個活動1:textView不會顯示小數

public void sendMessage(View view) { 
    // Do something in response to button 
    Intent intent = new Intent(this, PayTracker.class); 
    // Gather text from text boxes 
    EditText editText = (EditText) findViewById(R.id.hourly_wage); 
    //Create String from text 
    String message1 = editText.getText().toString(); 
    //Convert String to Int 
    int HW = 0; 
    try{ 
     HW = Integer.valueOf(message1); 
    } 
    catch(NumberFormatException nfe){ 
     //do something else here 
     //for e.g. initializing default values to your int variables 
    } 
    // Send Integers to PayTracker.java 
    intent.putExtra(MESSAGE_HW, HW); 
    // start new activity 
    startActivity(intent); 

然後這是活性2其中數字需要顯示:

public void sendMessage(View view) { 
    // Receive messages from options page 
    Intent intent = getIntent(); 
    int HW = intent.getIntExtra(Options.MESSAGE_HW, 0); 
    // Calculate pay per second 
    int PPS = 0; 
    PPS = (HW/3600); 

    // set textView 
    TextView textView = (TextView) this.findViewById(R.id.yourpay); 
    textView.setText(String.valueOf(PPS)); 
} 

任何幫助,將不勝感激!謝謝!

+0

聲明爲**浮動PPS = 0F; ** – 2012-07-27 13:42:14

回答

2

使用雙打或浮動。從我看到的情況來看,除了你忘記5除以2,因爲int是2,而不是2.5,所有事情都應該起作用。

這樣做GTUMCA說,並使用雙打;多頭是更大的整數。

換句話說

... 活性1

try{ 
    HW = Double.valueOf(message1); 
} 

活動2

//double HW = intent.getIntExtra(Options.MESSAGE_HW, 0); 
double HW = intent.getDoubleExtra(Options.MESSAGE_HW, 0); 
    // pay is rarely a round number 
double PPS = HW/3600; 
+0

我只是嘗試這樣做,我認爲它打破了部門和顯示器不知何故,不管輸入什麼號碼總是顯示0.0 – Hockeyman271 2012-07-27 13:54:20

+0

哎呦,對不起,那可能是因爲一個人不應該使用getIntExtra獲得額外的雙... – Shark 2012-07-27 13:56:34

+0

明白了!改變它得到DoubleExtra,一切正常!謝謝! – Hockeyman271 2012-07-27 14:01:37

1

您正在使用int作爲數據類型,所以你得到int值僅

double PPS = 0; 
^^^^^^ 
instead of   
int PPS = 0; 
+0

只讓它到第十位,我至少需要第1000個 – Hockeyman271 2012-07-27 13:38:26

+0

不能解釋你的評論嗎? – MAC 2012-07-27 13:41:59

+0

你的意思是你想要精確到0.001正確嗎?使用float或long,應該有足夠的精度。 – FWeigl 2012-07-27 13:43:38

1

這個數字被轉換爲INT

整數不具有小數:)

至於EditText只接受號碼:

EditText, inputType values (xml) 設置這些類型到您的EditText在佈局XML等中的一個:

android:inputType="number" 
+0

喔好吧,我應該怎麼用有那麼多精度整數呢? – Hockeyman271 2012-07-27 13:40:19

0

你不應該使用float或double保持數字與如此大的精度。由於其內部表示法,浮點數和double不能完全表示小數部分。請檢查BigDecimal,如果您想要1000位準確(或更多)。