去错误%不允许

时间:2016-09-27 15:02:43

标签: go compiler-errors

我已经为Mumax编写了一个带有go语法的程序,但我不理解我的错误。这里出现错误的脚本:

n:=0

Dtr0:=5*1e-12
Dtd0 :=300*1e-12
Dtf0:=5*1e-12
Dtz0:=20000*1e-12
tr0:=Dtr0
td0:=Dtd0+tr0
tf0:=Dtf0+td0
tz0:=Dtz0+tf0
TT:=tz0
n=t/TT
tr:=tr0+(n*TT)
td:=td0+(n*TT)
tf:=tf0+(n*TT)
tz:=tz0+(n*TT)

if (n % 2 == 0) {
        if (n<1 && t<tr) {
                a:=(t/tr)
        } else if (n>=1 && t>=tz0+((n-1)*TT) && t<tr) {
                a:=1/(tr-(tz0+((n-1)*TT)))*(t-(tz0+((n-1)*TT)))
        } else if (t>=tr && t<=td) {
                a:=1
        } else if (t>td && t<=tf) {
                a:=(-1/(tf-td))*(t-td)+1
        } else if (t>tf && t<tz) {
                a:=0
        }
}
if (int(n)%2==1) {
        if (n<1 && t<tr) {
                a:=-(t/tr)
        } else if (n>=1.0 && t>=tz0+((n-1)*TT) && t<tr) {
                a:=-(1/(tr-(tz0+((n-1)*TT)))*(t-(tz0+((n-1)*TT))))
        } else if (t>=tr && t<=td) {
                a:=-1
        } else if (t>td && t<=tf) {
                a:=-((-1/(tf-td))*(t-td)+1)
        } else if (t>tf && t<tz) {
                a:=0
        }
}

错误信息是:第37行:if(n%2 == 0){:不允许:%

非常感谢

1 个答案:

答案 0 :(得分:0)

这里有两个问题:

  • n必须是浮点数,因为TT必须是浮点数,因为它最终是两个浮点数的函数。这与顶部的n:= 0默认int定义冲突。
  • 浮点数上的模数运算符未定义(请参阅this playground了解尝试时会发生的情况)。

这意味着你有一个非常奇怪的Go实现,或者我们没有看到所有内容。

在任何情况下,要么你必须强制n到int(就像在你的第二个中那样)或者以某种方式使用math.Mod