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

标签 android string double

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

尝试如下

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

分配给数据的值是

// data = 1000.06

现在我正在将字符串转换为 double

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

得到的final_amount是1000.0,这是不正确的,因为amount值正在失去精度,我想要正确的答案,即1000.06

请让我知道不使用 format() 方法的正确方法

最佳答案

首先,正确的值是 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);

关于Android 如何将 String 转换为 Double 而不丢失精度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19423491/

相关文章:

android - 从导出的统一项目 Activity 中检测 Android Studio 中的触摸事件

android - 联机 azure 表可以工作,但脱机不能

ios - 按其 Double 参数之一对对象数组进行排序

java - 双倍型比较器

c# - 将 double 转换为 int 返回意外结果

android - E/VdcInflateDelegate:org.xmlpull.v1.XmlPullParserException:二进制XML文件行#17 <vector>标签需要viewportWidth> 0

c# - 如何在 Xamarin 中正确保存文件到共享文件夹中?

C++ 读取元数据文件,并处理由空格和 : 混合分隔的字段

C# 正则表达式匹配,名称

python - 如何确定任何列是否具有特定值