2013-10-17 104 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);