在java和android中,当从EditText解析出减号2时,结果失败

在java和android中,当从EditText解析出减号2时,结果失败,java,android,Java,Android,我有两个编辑文本: <EditText android:id="@+id/edit_text_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0.35" /> <EditText android:id="@+id/edit_text_2" android:layout_width="wrap_con

我有两个编辑文本:

<EditText
    android:id="@+id/edit_text_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="0.35" />

<EditText
    android:id="@+id/edit_text_2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="0.3" />
EditText e1 = (EditText) findViewById(R.id.edit_text_1);
EditText e2 = (EditText) findViewById(R.id.edit_text_2); 
double a1 = Double.parseDouble(e1.getText().toString())
double a2 = Double.parseDouble(e2.getText().toString());
Log.e("a1", a1 + "");
Log.e("a2", a2 + "");
Log.e("Result", (a1 - a2) + "");
0.35-0.3=0.05
但结果是:

12-06 13:14:00.816 11557-11557/com.example.android.test E/a1: 0.35
12-06 13:14:00.816 11557-11557/com.example.android.test E/a2: 0.3
12-06 13:14:00.816 11557-11557/com.example.android.test E/Result: 0.04999999999999999
为什么会发生这种情况?

试试这个

EditText e1 = (EditText) findViewById(R.id.edit_text_1);
EditText e2 = (EditText) findViewById(R.id.edit_text_2); 
double a1 = Double.parseDouble(e1.getText().toString())
double a2 = Double.parseDouble(e2.getText().toString());
Log.e("a1", a1 + "");
Log.e("a2", a2 + "");
Log.e("Result", String.format("%.2f", (a1-a2) + ""));

看看这个问题。并试着按照公认的答案使用BigDouble数据类型。在提问之前做一些研究。它将帮助你发展你的技能