将Double格式化为正确的格式

时间:2011-08-24 23:25:07

标签: java

在将经度/纬度设置为api的正确格式时遇到问题,我们无权访问。

我们需要将其转换为字符串,目前我们有:4.30044549E7 作为原始形式,但我们需要将其转换为4.30044549或类似(没有科学记数法)

如果我们使用

NumberFormat f = new DecimalFormat("#.#######");
f.format(4.30044549E7);

我们得到:43004454.9

如果我们使用

Double.toString(4.30044549E7);

我们得到:“4.30044549E7”

如果我们尝试转换为int,我们也会得到43004454.9

有人可以帮忙吗?我无法找到一个可接受的解决方案来摆脱数字

的科学记数法

3 个答案:

答案 0 :(得分:3)

如果你真的问过我的想法,你可以简单地将数字除以10,直到达到你想要的格式。

double value = 4.30044549E7;
while(value > 10 || value < -10){
  value /= 10;
}

System.out.println(String.format("%.8f", value)); //4.30044549

答案 1 :(得分:2)

您是否尝试过format

String.format("%.10f",doubleValue); 

它将在点后10位数格式化您的数字。

1e-5 -> 0.000010000
1e5  -> 100000.0000000000

答案 2 :(得分:1)

你永远不能将4.30044549E7“格式化”为4.30044549,因为它们不一样。

4.30044549E7实际上是43004454.9所以想要格式化程序显示那个双精度为4.30044549是一个奇怪的问题