Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java计算不同_Java_Math_Servlets_Jakarta Ee_Calculation - Fatal编程技术网

Java计算不同

Java计算不同,java,math,servlets,jakarta-ee,calculation,Java,Math,Servlets,Jakarta Ee,Calculation,我在JavaEE中有一个简单的数学计算类,结果与在线java计算器不同。示例:该网站给出了正确的结果,即0.0009。然而,对我来说,在我的java程序中,结果变成了9.xxx 在上述URL上使用的数学公式: (0.5) * ((0.85724038)-(0.779))/((40.32173718)-(0.779)) Java方程式: Total_Score = (0.5) * ((T) - (N)) / ((ME) - (N)); 其中: T=0.85724038 N=0.779 M=40

我在JavaEE中有一个简单的数学计算类,结果与在线java计算器不同。示例:该网站给出了正确的结果,即0.0009。然而,对我来说,在我的java程序中,结果变成了9.xxx

在上述URL上使用的数学公式:

(0.5) * ((0.85724038)-(0.779))/((40.32173718)-(0.779))
Java方程式:

Total_Score = (0.5) * ((T) - (N)) / ((ME) - (N));
其中: T=0.85724038

N=0.779

M=40.32173718


我很困惑,当两个方程都相同时,为什么答案不同

计算结果相同,但显示方式不同。我的输出是
9.893141646194965E-4

这意味着0.0009xxxxx。“E”代表科学记数法,E-4表示向左移动小数点4(因此变成0.0009xxxxxxxxx)。也可以写成9.893141646194965*10^-4。它们是相同的值,但我猜
System.out.println()
会将数字转换为科学符号,如果这样更容易阅读的话。Java将这些值解释为相同的值。

如果您想实际以非科学符号显示数字,可以使用
格式

String.format("%.Xf", yourNumHere);

其中
X
是要显示的小数位数。如果希望它显示为9位小数,格式字符串将是
“%.9f”

@Nix,因为它们是相同的。这只是视觉上的差异。@Carcigenicate是正确的,但要求只显示数字,而不是科学符号。所以我想用0.00格式显示结果,而不是E-4@Nix然后这样做:
System.out.printf(“%f\n”,值)并用您的等式替换值。@PieterMantel语法
Double.parseDouble(String.format(“%f”,value))
给出了
9.89E-4
@Nix Wait,您无法再次解析它,这就破坏了最初格式化它的目的。你不能有一个真正的双精度格式,你正在寻找<编码>格式化
打印前,请将其保存为双精度,直到打印完成。语法
Double.parseDouble(String.format(“%.9f”,value))
给出了
9.89314E-4
@Nix,这可能意味着您在将其转换为
格式之前已经将其转换为字符串。我刚刚测试了它,它工作得很好(在Clojure中,是的,但它应该是相同的)。我不知道你做了什么<代码>(字符串/格式“%.9f”(到数组[(*0.0001250.00069)])
产生
“0.000000086”