Java 将Double格式设置为正确的格式

Java 将Double格式设置为正确的格式,java,Java,无法将经度/纬度转换为我们无法访问的api的正确格式 我们需要将其转换为字符串,目前我们有:4.30044549E7 作为原始形式,但我们需要将其转换为4.30044549或类似版本(无科学符号) 如果我们使用 NumberFormat f = new DecimalFormat("#.#######"); f.format(4.30044549E7); 我们得到:43004454.9 如果我们使用 Double.toString(4.30044549E7); 我们得到:“4.3004454

无法将经度/纬度转换为我们无法访问的api的正确格式

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

如果我们使用

NumberFormat f = new DecimalFormat("#.#######");
f.format(4.30044549E7);
我们得到:43004454.9

如果我们使用

Double.toString(4.30044549E7);
我们得到:“4.30044549E7”

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


有人能帮忙吗?我找不到一个可以接受的解决办法来摆脱数字上的科学符号

如果你真的问我认为你做了什么,你可以简单地将数字除以10,直到达到你想要的格式

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

System.out.println(String.format("%.8f", value)); //4.30044549
双值=4.30044549E7;
而(值>10 | |值<-10){
数值/=10;
}
System.out.println(String.format(“%.8f”,value))//4.30044549

如果你真的问我认为你做了什么,你可以简单地将数字除以10,直到达到你想要的格式

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

System.out.println(String.format("%.8f", value)); //4.30044549
双值=4.30044549E7;
而(值>10 | |值<-10){
数值/=10;
}
System.out.println(String.format(“%.8f”,value))//4.30044549

你试过
格式吗

String.format("%.10f",doubleValue); 
它会将您的数字格式化为点后的10位数字

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

您是否尝试过
格式

String.format("%.10f",doubleValue); 
它会将您的数字格式化为点后的10位数字

1e-5 -> 0.000010000
1e5  -> 100000.0000000000
您永远无法将4.30044549E7“格式化”为4.30044549,因为它们不同

4.30044549E7实际上是43004454.9,因此希望格式化程序显示4.30044549的双精度值是一个奇怪的问题

您永远无法将4.30044549E7“格式化”为4.30044549,因为它们不同



4.30044549E7实际上是43004454.9,因此希望格式化程序显示双精度的4.30044549是一个奇怪的问题

4.30044549E7不是纬度或经度(至少不是度)。。。听起来你可能还有其他问题。你能详细说明一下一般输入数字(不仅仅是4.30044549e7)应该如何转换吗?例如,6.123e6和9.3145e5应该转换成什么?当一个数字对于一个double来说太长时,会产生e,因此该值对于纬度或经度来说都是正确的,但对于double来说太精确了,无法处理,因此使用EThose“四舍五入”它不是lat/lon,但可能是某组公制地理坐标,例如,UTM.4.30044549e7不是纬度或经度(至少不是度)。。。听起来你可能还有其他问题。你能详细说明一下一般输入数字(不仅仅是4.30044549e7)应该如何转换吗?例如,6.123e6和9.3145e5应该转换成什么?当一个数字对于一个double来说太长时,会产生e,因此该值对于纬度或经度来说都是正确的,但对于double来说太精确了,无法处理,因此使用EThose“四舍五入”它不是lat/lon,但可能是某组公制地理坐标,例如,UTM。他想在不移动
的情况下放下e。因此1E5->1@Vache你怎么知道的?我认为OP没有完全说明问题所在。@Vache,如果他们用它把坐标传递给api,那就没关系了。@Jason:我从问题的第二行就明白了。。。尼基塔:也许吧,但对OP说:P@Vache:OP表示他希望将4.30044549e7转换为“4.30044549或类似版本”。我不知道“或类似”是什么意思,也不知道4.30044549e6应该转换为4.30044549还是0.430044549。如果问题是“查找尾数”,则是前者,但这在数字转换应用程序中没有什么意义。否则,问题的规模为10^-7,但在这种情况下,应将其作为问题陈述的一部分进行陈述。他希望在不移动
的情况下删除E。因此1E5->1@Vache你怎么知道的?我认为OP没有完全说明问题所在。@Vache,如果他们用它把坐标传递给api,那就没关系了。@Jason:我从问题的第二行就明白了。。。尼基塔:也许吧,但对OP说:P@Vache:OP表示他希望将4.30044549e7转换为“4.30044549或类似版本”。我不知道“或类似”是什么意思,也不知道4.30044549e6应该转换为4.30044549还是0.430044549。如果问题是“查找尾数”,则是前者,但这在数字转换应用程序中没有什么意义。否则,问题的规模为10^-7,但在这种情况下,应将其作为问题陈述的一部分进行陈述。如果值=-3.12e7会发生什么情况?@Jason S
while(值>10 | |值<-10){…
…或value=10.0?结果应该是10.0还是1.0?我想纬度和经度应该用N/S/E/W术语给出,但我想是的,因为这些数字似乎没有意义,所以可能会发生一些事情。:P编辑。@Vache+1(随机词超过最小字符限制)如果value=-3.12e7会发生什么?@Jason S
while(value>10 | | value<-10){…
…或value=10.0?结果应该是10.0还是1.0?我想纬度和经度应该以N/S/E/W的形式给出,但我想是的,因为这些数字似乎没有意义,所以可能会发生一些事情。:P编辑。@Vache+1(随机单词超过最小字符限制)+1表示准确度——在OP指定之前无法真正回答问题。+1表示准确度——在OP指定之前无法真正回答问题。