java - 如何避免 Java Android Studio 中的 EXP 表示法

标签 java android exponential

大家。

我正在用Java制作一个长度转换器,但问题是,在进行转换时,例如从英寸到英里,它会使用指数值进行转换,也就是说,如果将12英寸转换为英里(例如)它们显示为 1.8939379E-4 而不是 0.000189394。 如何删除指数值?

以下是 MainActivity 和 XML 类的代码

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 java.util.ArrayList;
import java.util.List;

public class Longitud extends 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_longitud);

            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("Pulgadas");
            list1.add("Pies");
            list1.add("Yardas");
            list1.add("Millas");
            list1.add("Milimetros");
            list1.add("Centimetros");
            list1.add("Metros");
            list1.add("Kilómetros");
            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("Pulgadas");
            list2.add("Pies");
            list2.add("Yardas");
            list2.add("Millas");
            list2.add("Milimetros");
            list2.add("Centimetros");
            list2.add("Metros");
            list2.add("Kilómetros");
            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());

            /* you have 8 units to convert from and to.
             * that means 8*8 = 64 cases!
             * to minimize work we convert from any selected unit to Centimeter
             * then we convert from Centimeter to the desired unit.
             */

            // ratios from google convertor
            float ratio[] = {0.39370f, 0.0328084f, 0.0109361f, 6.21371e-6f, 10.0f, 1.0f, 0.01f, 1.0e-5f};
            float result = value / ratio[index1] * ratio[index2];
            to.setText(result + "");
        }
    }

XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#54A0DD"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="149dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="60sp"
        android:layout_marginTop="100sp"
        android:layout_weight="1" />

    <Spinner
        android:id="@+id/spinner2"
        android:layout_width="152dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="60sp"
        android:layout_marginTop="250sp"
        android:layout_weight="1" />

    <EditText
        android:id="@+id/InputEditText"
        android:layout_width="293dp"
        android:layout_height="60dp"
        android:layout_marginLeft="60sp"
        android:layout_marginTop="150sp"
        android:layout_marginRight="60sp"
        android:layout_weight="1"
        android:ems="10"
        android:inputType="number"
        android:textColor="#FFFFFF"
        android:textSize="20sp">

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/OutputTextView"
        android:layout_width="327dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="60sp"
        android:layout_marginTop="300sp"
        android:layout_marginRight="80sp"
        android:layout_weight="1"
        android:text=""
        android:textColor="#FFFFFF"
        android:textSize="38sp" />

    <Button
        android:id="@+id/btnSubmit"
        android:layout_width="134dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="140sp"
        android:layout_marginTop="500sp"
        android:layout_marginRight="60sp"
        android:background="@drawable/rounded_button"
        android:onClick="onClick"
        android:text="Convertir"
        android:textColor="#FFFFFF"
        tools:ignore="OnClick" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="60sp"
        android:layout_marginTop="70sp"
        android:text="Selecciona las unidades a convertir."
        android:textColor="#FFFFFF"
        android:textSize="16sp" />

</RelativeLayout>

感谢您的帮助和时间!

最佳答案

就这么做

Double.parseDouble(1.8939379E-4);

它会给你

0.000189394

关于java - 如何避免 Java Android Studio 中的 EXP 表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60931337/

相关文章:

android - 我可以作为新应用程序或在我的应用程序之外启动 Activity 吗?

Android Junit 测试失败,出现 "Only the original thread that created a view hierarchy can touch its views."

javascript - 随指数时间递减的 Setinterval

Python指数/线性曲线拟合

java - 将日期范围与另一个列表中的其他连续日期进行比较,以获得相对于比较列表的相邻范围

android ListView 的自定义主题分隔线颜色

java - 在 Android MultiSelectListPreference 中至少选择了一项

java - 将 float 和 double 格式化为科学记数法,具体格式如下

java - 我可以在同一个项目中使用 Native 语言支持和 Java 代码实现吗

java - 如何在java中对字符串格式的日期进行排序?