String.format("%.5e",someDouble) 结果是一个有 13 位小数且没有 "e+xx" 的数字

String.format("%.5e",someDouble) results in a number with 13 decimal places & no "e+xx"

如问题所示,我使用 String.format("%.5e",someDouble) 因为我想要以下格式 #.#####E+#

我正在为教程制作一个计算器。假设我输入的是 333,333,333,333 * 333,333,333,333。正确格式的答案应该是“1.11111E+23”。但相反,无论我在 String.format(String format, Object... args) 方法的格式参数中的 'e' 之前输入什么数字,它都会给我“1.1111111111089”。

问题一定出在其他地方,因为你的格式是正确的。 我试过这个:

public static void main (String[] args) throws java.lang.Exception
{
    double number = 333333333333l*(double)333333333333l;
    System.out.println(String.format("%.5e",number));
}

结果是1.11111e+23

...假设是 Java。您可以在这里查看:https://ideone.com/VubwX7

我的问题确实不在于字符串的格式。如果字符串已经是十进制格式,则在格式化之前有一些代码会以一定的字符长度截断字符串。我没有意识到的是,我使用的方程式已经太大了,实际上需要用科学记数法来表示。所以当它被截断时,它删除了 "e+23",只留下一个普通的 'ol 十进制数。具有讽刺意味的是,它甚至没有到达格式化字符串的代码。