我想开发一个计算基础应用程序但遇到一个问题。
尝试如下
double add_num = 10.06
String data = edittext.getText().toString();
分配给数据的值是
// data = 1000.06
现在我正在将字符串转换为双倍
double amount = Double.parseDouble(data);
// amount = 1000.0
double final_amount = amount + add_num;
// final_amount = 1010.0
获取final_amount 1000.0 这是不正确的,因为金额值正在失去精确度我想要正确答案 1000.06
请不要使用format()方法
让我知道正确的方法答案 0 :(得分:3)
嗯,首先正确的值是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);
答案 1 :(得分:0)
你应该使用String.ValueOf(double d); 例如:- Double to String
String value=String.valueOf(1000.06);
OR
String value=String.valueOf(add_num);
要加倍的字符串
Double value=Double.valueOf("1000.06");
OR
Double value=Double.valueOf(add_num);
答案 2 :(得分:0)
String s="1000.06";
double d=Double.parseDouble(s);
System.out.println(d);
上面的代码给出了输出: 1000.06