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