以字符串格式计算数字的最佳方法是什么?
例如
String n1 = 0.000112
String n2 = 0.000222
n1 + n2 - 我可以将字符串转换为双重计算。但在那之后我应该像这样用字符串转换它
n1 + n2 = string like this "0.000334"
如何用java做到最好的方法?
答案 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