我想开发一个计算基础应用程序,但遇到一个问题。
尝试如下
double add_num = 10.06
String data = edittext.getText().toString();
分配给数据的值是
// data = 1000.06
现在我正在将字符串转换为 double
double amount = Double.parseDouble(data);
// amount = 1000.0
double final_amount = amount + add_num;
// final_amount = 1010.0
得到的final_amount是1000.0,这是不正确的,因为amount值正在失去精度,我想要正确的答案,即1000.06
请让我知道不使用 format() 方法的正确方法
最佳答案
首先,正确的值是 1010.12
,而不是 1000.06
。这段代码:
double add_num = 10.06;
String value = "1000.06";
double amount = Double.parseDouble(value);
double final_amount = amount + add_num;
System.out.println(final_amount);
打印1010.1199999999999
,这是正确的。
如果您只想以所需的精度打印数字,请使用以下之一:
// Prints with two decimal places: "1010.12"
System.out.format("%.2f", final_amount);
System.out.println(String.format("%.2f", final_amount));
// Example, set TextView text with two decimal places:
edittext.setText(String.format("%.2f", final_amount));
顺便说一句,在您的代码中:
String data = edittext.getText().toString();
double amount = Double.parseDouble(value); // value?
不应该吗?
double amount = Double.parseDouble(data);
关于Android 如何将 String 转换为 Double 而不丢失精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19423491/