简体   繁体   English

从参数在 Android Studio 中舍入浮点数或双数

[英]Round float or double numbers in Android Studio from parameters

I've been reading a lot of posts about how to round numbers, either float or double to show, for example, only two decimals, it looks easy when you do it using already defined variables, but in my case, all numbers are entered through InputEditText, and I don't know where I should put the decimal limitation, so that instead of, for example, showing "2543.789906" it shows "2534.78"我一直在阅读很多关于如何舍入数字的帖子,无论是浮点数还是双精度数以显示,例如,只有两位小数,当您使用已定义的变量进行时看起来很容易,但在我的情况下,所有数字都被输入通过 InputEditText,我不知道我应该把小数限制放在哪里,所以不是,例如,显示“2543.789906”它显示“2534.78”

**My code:**

package com.example.converfuel;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;

public class Timeextends MainActivity {

    private Spinner spinner1, spinner2;
    private Button btnSubmit;
    private EditText from;
    private TextView to;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_masa);

        btnSubmit = (Button) findViewById(R.id.btnSubmit);
        from = (EditText) findViewById(R.id.InputEditText);
        to = (TextView) findViewById(R.id.OutputTextView);

        spinner1 = (Spinner) findViewById(R.id.spinner1);
        List<String> list1 = new ArrayList<String>();
        list1.add("Nanosecond");
        list1.add("Microsecond");
        list1.add("Milisecond");
        list1.add("Second");
        list1.add("Minute");
        list1.add("Hour");
        list1.add("Day");
        list1.add("Week");
        list1.add("Month");
        list1.add("Year");
        list1.add("Decade");
        list1.add("Century");
        ArrayAdapter<String> dataAdapter1 = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, list1);
        dataAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner1.setAdapter(dataAdapter1);


        spinner2 = (Spinner) findViewById(R.id.spinner2);
        List<String> list2 = new ArrayList<String>();
        list2.add("Nanosecond");
        list2.add("Microsecond");
        list2.add("Milisecond");
        list2.add("Second");
        list2.add("Minute");
        list2.add("Hour");
        list2.add("Day");
        list2.add("Week");
        list2.add("Month");
        list2.add("Year");
        list2.add("Decade");
        list2.add("Century");
        ArrayAdapter<String> dataAdapter2 = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, list2);
        dataAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner2.setAdapter(dataAdapter2);
    }


    public void onClick (View v){

        int index1 = spinner1.getSelectedItemPosition();
        int index2 = spinner2.getSelectedItemPosition();
        float value = Float.parseFloat(from.getText().toString());

//
//

        float ratio[] = {3.154e+18f, 3.154e+15f, 3.154e+12f, 3.154e+9f, 5.256e+7f, 876000f, 36500f, 5214f, 1200f, 100f, 10f, 1.0f};
        float result = value / ratio[index1] * ratio[index2];
        to.setText(result + "");
    }
}

Thanks for your help.谢谢你的帮助。

Try this way试试这个方法

 DecimalFormat df = new DecimalFormat("#.##");
 String strResult = String.valueOf(Double.valueOf(df.format(result)));
 to.setText(strResult);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM