Math.floor 关于数学计算
Math.floor on a math calculation
我已经进行了计算,取了小数点,但现在我想计算它以显示向下舍入的数字。
我发现我可以使用 math.floor 但我无法在代码中获取它。
我去掉了小数点但无法向下舍入。
代码是这样的(计算的部分):
public void onClick(View view) {
if (etBarfles.getText().toString().equals("")) {
Toast.makeText(getActivity(), "Vul zowel bar in fles, inhoud fles als liters per " +
"minuut in!", Toast.LENGTH_SHORT).show();
} else {
if (etInhoudfles.getText().toString().equals("")) {
Toast.makeText(getActivity(), "Vul zowel bar in fles, inhoud fles als liters per " +
"minuut in!", Toast.LENGTH_SHORT).show();
} else {
if (etLitersperminuut.getText().toString().equals("")) {
Toast.makeText(getActivity(), "Vul zowel bar in fles, inhoud fles als liters " +
"per minuut in!", Toast.LENGTH_SHORT).show();
} else {
}
tvResult.setText(nodecimals((((Float.parseFloat(etBarfles.getText().toString()) *
(Float.parseFloat(etInhoudfles.getText().toString())) / (Float.parseFloat
(etLitersperminuut.getText().toString()))) / 60))));
}
}
}
private String nodecimals(float val) {
return String.format("%.0f", val);
}
尝试以下方法
tvResult.setText(String.valueOf((int) Math.floor(((Float.parseFloat(etBarfles.getText()
.toString()) *
(Float.parseFloat(etInhoudfles.getText().toString())) / (Float.parseFloat
(etLitersperminuut.getText().toString()))) / 60))));
(int) Math.floor()
会将值转换为整数底值,然后String.valueOf()
会将int
转换为String
,这样就可以设置为TextView
.
需要改进的地方:
您可以按照以下准则改进您的代码:
您在多个地方使用同一行 etBarfles.getText().toString()
作为检查条件。最好用该值初始化一个变量。像
String etBarFilesText = etBarfles.getText().toString();
你的条件etBarfles.getText().toString().equals("")
可以写成Android
如下
!TextUtils.isEmpty(etBarFilesText)
您的字符串应该在您的 strings.xml
中定义。因此,如果您的错误消息在 strings.xml
中被命名为 error_string
,那么您的 Toast
消息将看起来像这样。
Toast.makeText(getActivity(), getString(R.string.error_string), Toast.LENGTH_SHORT).show();
你的线路
tvResult.setText(nodecimals((((Float.parseFloat(etBarfles.getText().toString()) *
(Float.parseFloat(etInhoudfles.getText().toString())) / (Float.parseFloat
(etLitersperminuut.getText().toString()))) / 60))));
如果您使用不同的变量,而不是将所有内容都写在一个大句子中,可能会更简单、更易读。
我已经进行了计算,取了小数点,但现在我想计算它以显示向下舍入的数字。 我发现我可以使用 math.floor 但我无法在代码中获取它。 我去掉了小数点但无法向下舍入。
代码是这样的(计算的部分):
public void onClick(View view) {
if (etBarfles.getText().toString().equals("")) {
Toast.makeText(getActivity(), "Vul zowel bar in fles, inhoud fles als liters per " +
"minuut in!", Toast.LENGTH_SHORT).show();
} else {
if (etInhoudfles.getText().toString().equals("")) {
Toast.makeText(getActivity(), "Vul zowel bar in fles, inhoud fles als liters per " +
"minuut in!", Toast.LENGTH_SHORT).show();
} else {
if (etLitersperminuut.getText().toString().equals("")) {
Toast.makeText(getActivity(), "Vul zowel bar in fles, inhoud fles als liters " +
"per minuut in!", Toast.LENGTH_SHORT).show();
} else {
}
tvResult.setText(nodecimals((((Float.parseFloat(etBarfles.getText().toString()) *
(Float.parseFloat(etInhoudfles.getText().toString())) / (Float.parseFloat
(etLitersperminuut.getText().toString()))) / 60))));
}
}
}
private String nodecimals(float val) {
return String.format("%.0f", val);
}
尝试以下方法
tvResult.setText(String.valueOf((int) Math.floor(((Float.parseFloat(etBarfles.getText()
.toString()) *
(Float.parseFloat(etInhoudfles.getText().toString())) / (Float.parseFloat
(etLitersperminuut.getText().toString()))) / 60))));
(int) Math.floor()
会将值转换为整数底值,然后String.valueOf()
会将int
转换为String
,这样就可以设置为TextView
.
需要改进的地方:
您可以按照以下准则改进您的代码:
您在多个地方使用同一行
etBarfles.getText().toString()
作为检查条件。最好用该值初始化一个变量。像String etBarFilesText = etBarfles.getText().toString();
你的条件
etBarfles.getText().toString().equals("")
可以写成Android
如下!TextUtils.isEmpty(etBarFilesText)
您的字符串应该在您的
strings.xml
中定义。因此,如果您的错误消息在strings.xml
中被命名为error_string
,那么您的Toast
消息将看起来像这样。Toast.makeText(getActivity(), getString(R.string.error_string), Toast.LENGTH_SHORT).show();
你的线路
tvResult.setText(nodecimals((((Float.parseFloat(etBarfles.getText().toString()) * (Float.parseFloat(etInhoudfles.getText().toString())) / (Float.parseFloat (etLitersperminuut.getText().toString()))) / 60))));
如果您使用不同的变量,而不是将所有内容都写在一个大句子中,可能会更简单、更易读。