更新:好的,现在一切正常。我弄清楚我做错了什么。在该式中,rH(相对湿度)应该是百分比,即“30%”。赋值所需的输入格式是十进制的百分比,即“.30”。这么简单的修复,我甚至没有看到它。我一直在输入.30而不将其转换为整个百分比。所以我用一个简单的.30 * 100来解决这个问题。谢谢大家帮助我,我不知道我是否可以为所有答案做一个复选标记所以我只选了一个。
我正在尝试编写一个代码来计算露点。我的代码有效,但我使用的公式太简单了,我无法得到准确的答案。我找到了一个更高级的公式,这个公式非常冗长,它包含了一些指数。我一直试图找出如何正确格式化它,到目前为止我唯一能找到的是math.pow方法,我觉得这个方法太简单了。当然,我可能是错的,因为我只使用java大约两周。
有问题的公式是:
Tdc =(Tc - (14.55 + 0.114 * Tc)*(1-(0.01 * RH)) - ((2.5 + 0.007 * Tc)*(1-(0.01 * RH)))^ 3 - (15.9 + 0.117 * Tc)*(1-(0.01 * RH))^ 14)
两个指数是^ 3和^ 4。我将如何在java中编写?正如我所说,该程序确实有效,这是格式化公式的一个简单问题。感谢。
编辑:我找到此公式的网站是http://www.angelfire.com/ok5/orpheus/metcal.html
它位于页面的中间位置。它确实显示^ 14,而不是4.我最初没有发现它,我会仔细检查看哪一个有效。
答案 0 :(得分:1)
使用Math
库完成指数。具体而言Math.pow(a, b)
。
https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#pow-double-double-
此外,我会将等式的组成部分分成有意义的较小变量。然后将这些部分组合成最终的等式。
例如:double termTc1 = 14.55 + (0.114 * Tc); // Do not use this name, give them meaningful names
答案 1 :(得分:1)
正如您的建议,使用Math.pow
功能:
double tdc = Tc -
(14.55 + 0.114 * Tc) * (1 - (0.01 * RH)) -
Math.pow(((2.5 + 0.007 * Tc) * (1 - (0.01 * RH))), 3) -
(15.9 + 0.117 * Tc) * Math.pow((1 - (0.01 * RH)), 14);
答案 2 :(得分:1)
我的格式如下:
double tdc = tc - (14.55 + 0.114 * tc) * (1 - (0.01 * rh))
- Math.pow((2.5 + 0.007 * tc) * (1 - (0.01 * rh)), 3)
- (15.9 + 0.117 * tc) * Math.pow(1 - (0.01 * rh), 14);
但是,它会在您的公式中显示两个潜在错误:
也许(?)正确的公式是这样的,对齐显示公式的模式:
double tdc = tc - (14.55 + 0.114 * tc) * (1 - (0.01 * rh))
- Math.pow(( 2.5 + 0.007 * tc) * (1 - (0.01 * rh)), 3)
- Math.pow((15.9 + 0.117 * tc) * (1 - (0.01 * rh)), 4);
这也表明子表达式(1 - (0.01 * rh))
可以预先计算,就像answer by Eric Duminil那样。
答案 3 :(得分:0)
如果您正在使用局部变量,则应使用小写名称。
最后,你可以定义一个等于1 - 0.01 * rh
的临时变量,因为你连续三次使用它:
double tc = 23; // just an example
double rh = 67; // just an example
double rh2 = 1 - (0.01 * rh);
double tdc = tc - (14.55 + 0.114 * tc) * rh2 -
Math.pow((2.5 + 0.007 * tc) * rh2, 3) -
(15.9 + 0.117 * tc) * Math.pow(rh2, 14);