如何在android中添加两个没有指数的双精度值
Posted
技术标签:
【中文标题】如何在android中添加两个没有指数的双精度值【英文标题】:How can i add two double values without exponential in android 【发布时间】:2012-03-05 12:17:44 【问题描述】:请帮我解决这个问题。我试图从 textview 中获取值并存储为字符串。然后它转换为双倍。虽然最多可以转换 7 个字符,但如果我尝试添加超过 7 个字符,结果是 1.23456789E8。这是我的代码
String value = tvInput.getText().toString();
\\tvInput is my textView
Double result = 0.0;
Double input1=0.0;
Double input2=0.0;
input=Double.parseDouble(value);
result = input1 + input2;
tvInput.setText(Double.toString(result));
如果我将 input1 值作为 1234567 并将 input2 作为 1234567 我得到正确的结果,但如果将 input1 作为 12345678 和 input2 作为 3. 输出是 1.2345681E7
【问题讨论】:
【参考方案1】:你得到的值是正确的,问题在于你的打印方式。
您依赖 toString 来实现双重输出;如果要保证没有指数符号,则应使用DecimalFormat 或String.format 对其进行格式化;
DecimalFormat myFormatter = new DecimalFormat("############");
tvInput.setText(myFormatter.format(result));
另见the format documentation
【讨论】:
谢谢Joeri Hendrickx先生,我解决了我的问题 @sam np。如果这解决了您的问题,请接受答案。单击答案左侧的复选标记图标,使其变为绿色。谢谢! @JoeriHendrickx hahahah 不错的答案以及接受答案的不错解释。“单击答案左侧的复选标记图标使其变为绿色”这一行非常棒:P【参考方案2】:您描述的行为与javadoc 一致。你可以改用String.format。
【讨论】:
【参考方案3】:12345678
和 1.2345678E7
是完全相同的数字。没问题
你的问题在于表示,如果 E>6 则 toString() 使用科学记数法。您可能需要为此使用 NumberFormat。
【讨论】:
【参考方案4】:使用String.format:example
class Main
public static void main (String[] args) throws java.lang.Exception
String i1 = "12345678";
String i2 = "3";
double d1 = Double.parseDouble(i1);
double d2 = Double.parseDouble(i2);
double d = d1 + d2;
System.out.println( String.format("%f", d) );
【讨论】:
【参考方案5】:为什么不使用整数呢?
String value = tvInput.getText().toString();
\\tvInput is my textView
int result = 0;
int input1 = 0;
int input2 = 0;
input=Integer.parseInt(value);
result = input1 + input2;
tvInput.setText(Integer.toString(result));
【讨论】:
以上是关于如何在android中添加两个没有指数的双精度值的主要内容,如果未能解决你的问题,请参考以下文章
在 Scala Java Play 框架中格式化没有小数的双精度并为数千添加逗号