2013-10-17 95 views
2

我想开发一个计算基础应用程序,但遇到一个问题。Android如何将字符串转换为双精度不丢失精度?

尝试如下

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这是不正确因为amoun牛逼值损失精度,我想正确的答案是1000.06

请让我知道正确的方法,而无需使用format()方法

回答

0

你应该使用将String.valueOf(双d); 例如: - 双到字符串

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); 
0
String s="1000.06"; 
double d=Double.parseDouble(s); 
System.out.println(d); 

上面的代码给输出:1000.06

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);