【发布时间】:2015-08-28 05:16:15
【问题描述】:
我正在尝试将一些 Pascal 代码转换为 C++ 代码。我一直在试图弄清楚如何翻译这部分。
Function ThetaG_JD(jd : double) : double;
var
UT,TU,GMST : double;
begin
**UT := Frac(jd + 0.5);**
jd := jd - UT;
TU := (jd - 2451545.0)/36525;
GMST := 24110.54841 + TU * (8640184.812866 + TU * (0.093104 - TU * 6.2E-6));
**GMST := Modulus(GMST + 86400.0*1.00273790934*UT,86400.0);**
ThetaG_JD := twopi * GMST/86400.0;
end; {Function ThetaG_JD}
我对我加粗的两行特别有问题。我怎样才能把它翻译成c++?非常感谢。
【问题讨论】:
-
这似乎是一个函数调用,因为 Pascal 中的模数是
MOD运算符。你有模数函数的来源吗? -
很遗憾我没有来源。我不明白为什么作者写出模数而不只是使用模数。但即使他这样做了,这些也不是整数,所以我认为 mod 不合适?
-
你可以假设它是
mod的浮点变体,它会翻译为fmod(),但不要引用我的话 ;-) 同样Frac()可能只返回小数部分,但实际上这是任何人的猜测。如果你没有所有的源代码,你实际上就无法正确地完成这项工作。 -
您发布的代码调用了
modulus函数,您的问题中没有包含该函数。由于它不是标准的 Pascal 函数(mod运算符在 Pascal 中进行模运算)并且我们不知道modulus函数做什么或试图做什么,所以我们无法解释为什么它不能像你一样工作预计。找到模函数的来源(或至少是文档),我们可能会提供帮助。如果没有这些信息,您可能只能自己调试,因为我们没有能力这样做。