Java textView不会显示小数

Java textView不会显示小数,java,android,int,decimal,Java,Android,Int,Decimal,我的程序有问题,我的文本视图不会显示任何小数,下面是关于发生了什么的详细信息。用户在文本编辑中输入一个数字(以及如何使文本编辑仅接受数字和小数点?),该数字转换为int,发送到我的第二个活动,除以3600,然后显示在文本框中。问题是,当显示该数字时,它没有十进制值,例如,如果它小于1,它将不会显示任何内容,我如何着手解决这个问题?我至少要去第1000个地方。 以下是我的代码一活动1: public void sendMessage(View view) { // Do somet

我的程序有问题,我的文本视图不会显示任何小数,下面是关于发生了什么的详细信息。用户在文本编辑中输入一个数字(以及如何使文本编辑仅接受数字和小数点?),该数字转换为int,发送到我的第二个活动,除以3600,然后显示在文本框中。问题是,当显示该数字时,它没有十进制值,例如,如果它小于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);
然后这是activity2,需要显示数字:

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

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

您使用的是
int
作为数据类型,因此只能获取
int

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

您正在使用
int
作为数据类型,因此只能获取
int

double PPS = 0;
^^^^^^
instead of           
int PPS = 0;
这个数字被转换成整数

整数没有小数:)

对于仅接受数字的编辑文本:

在布局xml中将这些类型之一设置为EditText,如下所示:

android:inputType="number" 
这个数字被转换成整数

整数没有小数:)

对于仅接受数字的编辑文本:

在布局xml中将这些类型之一设置为EditText,如下所示:

android:inputType="number" 

使用双精度或浮点数。从我看来,一切都应该是可行的,只是你忘了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;

使用双精度或浮点数。从我看来,一切都应该是可行的,只是你忘了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;


您不应该使用float或double来保持如此高的精度。Float和double不能精确地表示小数,因为它们是内部表示形式。请检查您是否需要1000位精度(或更高)。

您不应该使用float或double来保持如此高的精度。Float和double不能精确地表示小数,因为它们是内部表示形式。请检查您是否需要1000位精度(或更高)。

这只能让它排到第10位,我至少需要1000位精度。您的意思是希望精度达到0.001,对吗?使用float或long,它们应该有足够的精度。@user804967说我想在我的第一个活动中使用long,而不是将字符串转换为int。如何将其转换为long?这是不可能的,因为小数部分被永久删除。转换后,您将获得XXX。000000000@chester1000字符串在转换为long之前不会保留小数点?这只会让它移到第10位,我需要至少1000位,你的意思是你想要精确到0.001,对吗?使用float或long,它们应该有足够的精度。@user804967说我想在我的第一个活动中使用long,而不是将字符串转换为int。如何将其转换为long?这是不可能的,因为小数部分被永久删除。转换后,您将获得XXX。000000000@chester1000字符串在转换为长整数之前不会保留小数?哦,好吧,我应该用什么来代替精度那么高的整数?哦,好吧,我应该用什么来代替精度那么高的整数?声明为float PPS=0F;声明为浮动PPS=0F;我刚刚试过这个,我认为它打破了分区,并以某种方式显示,无论输入什么数字,它总是显示0.0呜呜,对不起,这可能是因为不应该使用getIntExtra来获得双额外…明白了!将其更改为getDoubleExtra,一切正常!!谢谢我刚刚试过这个,我认为它打破了分区,并以某种方式显示,无论输入什么数字,它总是显示0.0呜呜,对不起,这可能是因为不应该使用getIntExtra来获得双额外…明白了!将其更改为getDoubleExtra,一切正常!!谢谢