Android How can I convert String to Double without

2019-07-17 15:51发布

问题:

This question already has an answer here:

  • How can I convert String to Double without losing precision in Java? 4 answers

i want to develop one calculation base application but getting one problem.

Tried as below

double add_num = 10.06
String data = edittext.getText().toString();

value assign to data is

// data = 1000.06

now i am converting string to double

double amount = Double.parseDouble(data);
// amount = 1000.0
double final_amount = amount + add_num;
// final_amount = 1010.0

getting final_amount is 1000.0 which is not correct because amount value is losing precision i want the correct answer which is 1000.06

please let me know correct way without using format() method

回答1:

Well, first of all correct value is 1010.12, not 1000.06. And this code:

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

prints 1010.1199999999999, which is correct.

If you just want to print the number with the desired precision, use one of:

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

By the way, in your code you have:

String data = edittext.getText().toString();
double amount = Double.parseDouble(value); // value?

Shouldn't it be?

double amount = Double.parseDouble(data);


回答2:

String s="1000.06";
double d=Double.parseDouble(s);
System.out.println(d);

The above code give output: 1000.06



回答3:

You should use String.ValueOf(double d); For Example:- Double to String

String value=String.valueOf(1000.06);

OR

String value=String.valueOf(add_num);

String to Double

Double value=Double.valueOf("1000.06");

OR

Double value=Double.valueOf(add_num);