java - 如何使数字结果不带小数

标签 java android numbers decimal rounding

我的代码有问题。我将复制简化代码,其中包含两个编辑文本和一个 TextView 和按钮。 使用此代码,如果 editext1 中的值为“100”而其他 editext2 中的值为“60”,我得到的结果答案为“40.0”,它应该为“40”。谢谢

代码:

public class MainActivity extends AppCompatActivity {
    EditText number1;
    EditText number2;
    Button Add_button3;
    TextView descr;
    int ans=0;
    private BreakIterator view;

    @SuppressLint("CutPasteId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //
        number1=(EditText) findViewById(R.id.editText_first_no);
        number2=(EditText) findViewById(R.id.editText_second_no);
        Add_button3=(Button) findViewById(R.id.add_button3);
        descr = (TextView) findViewById(R.id.textView_DESC);

        //
        Add_button3.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                double num1 = Double.parseDouble(number1.getText().toString());
                double num2 = Double.parseDouble(number2.getText().toString());
                double sump = num1 - num2;

                descr.setText(Double.toString(sump));
            }
        });
    }
}

最佳答案

有两种选择,转换和使用 Math 类。

转换:descr.setText(Integer.toString((int)sump));

这种方法只有一个缺点,您正在丢失信息。

因此,如果您抽象 double sump = 5.0 - 3.3; 等于:1.7000000000000002,则转换为您“1”。

在我看来更好的方法是使用 Math 类,特别是方法 random() 即:

descr.setText(Math.round(sump));

该方法也会删除一些数据,但会将数字四舍五入为最接近的整数(整数),这是处理类似情况的首选方法。

更多请查看:How to convert float to int with Java

关于java - 如何使数字结果不带小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58532164/

相关文章:

c# - Xamarin Android httpwebrequest,无法访问已处置的对象

javascript - 无法在 JavaScript 中将非常大的数字增加一

rust - 实现基类型(float)的特征

Java GC - 有没有办法确定收集了哪些对象

android - MotionLayout 滑动而不捕捉到状态?

java - 通过查看 RecyclerView 的值来查找 RecyclerView 行位置

c# - 如何从 Uri xamarin android 获取实际路径

ruby - 以 Stackoverflow 信誉的样式显示数字

Java反射-错误抛出

c# - C# 中的命名空间是否类似于 Java 中的包