Android如何将String转换为Double而不会丢失精度?

时间:2013-10-17 09:55:31

标签: android string double

我想开发一个计算基础应用程序但遇到一个问题。

尝试如下

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()方法

让我知道正确的方法

3 个答案:

答案 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