2

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

尝试如下

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

4

3 回答 3

4

嗯,首先正确的值是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);
于 2013-10-17T10:02:53.443 回答
0

你应该使用 String.ValueOf(double d); 例如:- 双倍字符串

String value=String.valueOf(1000.06);

或者

String value=String.valueOf(add_num);

字符串加倍

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

或者

Double value=Double.valueOf(add_num);
于 2013-10-17T09:59:36.137 回答
0
String s="1000.06";
double d=Double.parseDouble(s);
System.out.println(d);

上面的代码给出输出:1000.06

于 2013-10-17T10:00:35.690 回答