正如问题所示,我正在使用String.format("%.5e",someDouble)
,因为我想要以下格式#.#####E+#
。
我正在为教程制作一个计算器。假设我输入333,333,333,333 * 333,333,333,333。正确格式的答案应为“1.11111E+23
”。但是,无论我在1.1111111111089
方法的格式参数中放在'e'之前的数字,它都会给我“String.format(String format, Object... args)
”。
答案 0 :(得分:0)
问题必须在其他地方,因为您的格式正确。 我试过这个:
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
答案 1 :(得分:0)
我的问题确实不在于String的格式化。格式化之前有一些代码,如果已经是十进制格式,则会将字符串截断为一定长度的字符。我没有意识到的是,我使用的等式已经很大,实际上需要用科学记数法表达。因此,当它被截断时,它删除了“e + 23”,并且只留下了一个简单的'ol十进制数字。具有讽刺意味的是,它甚至没有达到格式化String的代码。