2

我的程序有问题,我的 textveiw 不会显示任何小数,这是发生了什么的分解。用户在 textEdit 中输入一个数字(另外我如何使 textedit 只接受数字和小数点?)该数字被转换为 int,发送到我的第二个活动,被 3600 潜水,然后显示在 textveiw 框中。问题是,当显示该数字时,它没有十进制值,例如,如果它小于 1,它将不显示任何内容,我该如何解决这个问题?我需要它至少达到第 1000 名。这是我的代码一活动1:

    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));
}

任何帮助,将不胜感激!谢谢!

4

4 回答 4

2

使用双打或浮点数。据我所知,除了你忘记了 5 除以 2 因为 int 是 2 而不是 2.5 之外,一切都应该工作。

照 gtumca 说的做,使用双打;多头只是更大的整数。

换句话说...活动1

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

活动二

//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;
于 2012-07-27T13:49:59.020 回答
1

您正在使用intas 数据类型,因此您int仅获取值

double PPS = 0;
^^^^^^
instead of           
int PPS = 0;
于 2012-07-27T13:36:14.243 回答
1

该数字被转换为 int

整数没有小数:)

至于 EditText 只接受数字:

EditText,inputType 值 (xml) 将其中一种类型设置为布局 xml 中的 EditText,例如:

android:inputType="number" 
于 2012-07-27T13:38:18.887 回答
0

您不应该使用 float 或 double 来保持如此高精度的数字。Float 和 double 由于它们的内部表示形式,不能准确地表示小数。如果您想要 1000 位精度(或更多),请检查BigDecimal 。

于 2012-07-27T13:54:48.823 回答