嗨我想要make所以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 :(得分:1)
您的mgs
变量是一个Integer对象。将其设置为float类型以显示小数位。
float mgs = Integer.parseInt(cl) / Integer.parseInt(wid.toString()) / Integer.parseInt(hundra);
我希望这会有所帮助。
答案 1 :(得分:0)
int
除法只生成int
个。如果您希望输出为float
或double
类型,则必须使用double
或float
除法。
Double mgs;
mgs = Double.parseDouble(cl) / Double.parseDouble(wid.toString()) / Double.parseDouble(hundra);
请注意,并非所有在表达式中考虑的变量都需要double
,只有其中一个变量。
另一件值得注意的事情是你是否想要两个小数位(假设这里有一个货币)。默认情况下,Java / Android只会根据需要吐出尽可能多的小数位。 1.80
将显示为1.8
。为了缓解这种情况,您应该使用NumberFormat
(具体而言,使用NumberFormat.getCurrencyInstance()
),以便您可以指定您希望默认Locale
货币的小数位数。