用java进行字符串双重计算

时间:2016-01-23 18:19:31

标签: java string numbers

以字符串格式计算数字的最佳方法是什么?

例如

String n1 = 0.000112
String n2 = 0.000222

n1 + n2 - 我可以将字符串转换为双重计算。但在那之后我应该像这样用字符串转换它

n1 + n2 = string like this "0.000334"

如何用java做到最好的方法?

4 个答案:

答案 0 :(得分:1)

    String n1 = "0.000112";
    String n2 = "0.000222";

    System.err.println( new BigDecimal( n1).add( new BigDecimal( n2)).toString());

答案 1 :(得分:0)

您可以使用String.valueOf(double)Double.parseDouble(String)

String result = String.valueOf(Double.parseDouble("0.01") + Double.parseDouble("0.02"));

另一种选择是(我将省略解析):

String s = "" + doubleValue;

double到String的可能转换列表非常无穷无尽。

答案 2 :(得分:0)

看看你的例子,我不确定你是否关心小数精度。因此,例如,如果我要保持10位小数的精确度,我会尝试以下。

String n1 = "0.000112";
String n2 = "0.000222";

BigDecimal n1Big = new BigDecimal(n1).setScale(10,BigDecimal.ROUND_HALF_UP);
BigDecimal result = n1Big.add(new BigDecimal(n2));

String ans = result.toString();

System.out.println(ans);

我希望这会有所帮助

答案 3 :(得分:0)

其他答案显示了BigDecimal的良好方法。我将根据您在问题中的策略描述如何做到这一点:

  

将字符串转换为双重计算

  • String转换为Double

    Double nd1 = Double.parseDouble(n1);
    Double nd2 = Double.parseDouble(n2);
    
  • 添加

    Double sum = nd1 + nd2;
    
  

但之后我应该用字符串

转换它
  • 然后将其转换回String。在这里,您需要精确指定格式。

    String s = new DecimalFormat("#.######").format(sum);
    System.out.println(s);
    

输出:
0.000334