Java String.format(“%.5e”,someDouble)生成一个小数点后13位的数字;否";e+;";

Java String.format(“%.5e”,someDouble)生成一个小数点后13位的数字;否";e+;";,java,string,format,exponential,Java,String,Format,Exponential,正如问题所提示的,我使用的是String.format(“%.5e”,someDouble),因为我需要以下格式。#E+# 我正在做一个计算器作为教程。假设我正在输入333333*333333。正确格式的答案应为“1.11111 e+23”。但是它却给了我“1.1111111089”,不管我在String.format(String-format,Object…args)方法的format参数中的'e'前面放了什么数字 问题一定在其他地方,因为您的格式是正确的。 我试过这个: public st

正如问题所提示的,我使用的是
String.format(“%.5e”,someDouble)
,因为我需要以下格式
。#E+#


我正在做一个计算器作为教程。假设我正在输入333333*333333。正确格式的答案应为“
1.11111 e+23
”。但是它却给了我“
1.1111111089
”,不管我在
String.format(String-format,Object…args)
方法的format参数中的'e'前面放了什么数字

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

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。您可以在这里检查:

我的问题确实不是字符串的格式问题。在格式化之前有一段代码将字符串截断为一定长度的字符(如果它已经是十进制格式)。我没有意识到的是,我使用的方程已经太大了,实际上需要用科学符号来表示。因此,当它被截断时,它删除了“e+23”,只留下一个普通的“ol”十进制数。讽刺的是,它甚至没有到达格式化字符串的代码。

请参见添加语言标记。