Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
你能在JavaScript中找到Mod 2Pi吗?_Javascript - Fatal编程技术网

你能在JavaScript中找到Mod 2Pi吗?

你能在JavaScript中找到Mod 2Pi吗?,javascript,Javascript,编辑:我使用Math.atan2()有一个角度,然后我想从中添加或减去值。然而,这种加减法有时意味着角度大于π或小于-π,我正在寻找一种方法,使其中一个外角回到正确的范围 我试图使用以下代码在JavaScipt中找到mod 2pi值: foo % Math.PI * 2; 但是,它总是返回foo,即使我尝试以下操作: var bar = Math.PI * 2; foo % bar; 有人能解释一下为什么这不起作用吗 DLiKS您没有进行作业: foo = foo % Math.PI * 2

编辑:我使用Math.atan2()有一个角度,然后我想从中添加或减去值。然而,这种加减法有时意味着角度大于π或小于-π,我正在寻找一种方法,使其中一个外角回到正确的范围

我试图使用以下代码在JavaScipt中找到mod 2pi值:

foo % Math.PI * 2;
但是,它总是返回foo,即使我尝试以下操作:

var bar = Math.PI * 2;
foo % bar;
有人能解释一下为什么这不起作用吗


DLiKS

您没有进行作业:

foo = foo % Math.PI * 2;
或:

编辑:

为了解释更新后的问题,您有一个值foo,可以是任何角度,但是您希望foo在[-pi,pi]范围内。您需要按程序执行此操作:

foo %= 2 * Math.PI;  // Now in the range [-2pi,2pi]

if (Math.abs(foo) > Math.PI) {
  foo -= 2 * Math.PI * Math.sign(foo);
}

类型。数学。圆周率是双精度的。任何(整数%Double)都将返回整数端

尝试:


var bar=parseInt(Math.PI*2*10000);
文件。书写(bar/10000+“
”; var foo=60000; foo%=巴; 文件。写(foo/10000+“
”;
即使我做了一个作业,它仍然不起作用。我仍然得到相同的值。您将不得不显示更多代码。这里使用的两个例子:哦,对不起,我应该重新表述我的问题。如果foo mod 2pi小于2pi(返回一个负值),有没有办法得到foo mod 2pi?如果foo小于2pi,返回的值将是foo。这就是mod的工作原理。只有当foo小于0.pi%2*pi不是-pi时,才会得到负值。它是圆周率。模定义为除法后的余数。如果你用π除以2pi,结果是0和π的余数。这个余数是模结果。你想解决什么问题?也许我们可以帮你找到你真正想要的。添加了问题的上下文,很抱歉我问它的方式很糟糕。JS没有Ints的概念。基本数字类型为IEEE 754双精度。
foo %= 2 * Math.PI;  // Now in the range [-2pi,2pi]

if (Math.abs(foo) > Math.PI) {
  foo -= 2 * Math.PI * Math.sign(foo);
}
<script type="text/javascript">
 var bar = parseInt(Math.PI * 2 * 10000);
 document.write(bar / 10000 + "<br/>");
 var foo = 60000;
 foo %= bar;
 document.write(foo / 10000 + "<br />");
</script>