我试图在 Unity 中做一些事情来找到一个数字的倍数。我试图找到这个的方式是我有一个 for 循环通过数字,如果数字 / i 等于 Mathf.Round(number / i),那么我把它算作一个倍数,但是,它只是计算每一个数字,当我尝试调试时。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AIpatternPredict : MonoBehaviour
{
public List<int> attacks = new List<int>();
public int lowerScore;
void Start()
{
List<int> multiples = new List<int>();
for (var i = 1; i < attacks.Capacity; i++)
{
float g = attacks.Capacity / i;
Debug.Log(g);
if (Mathf.Round(g) == g)
{
multiples.Add(i);
}
}
}
}
float g = attacks.Capacity / i;
你的attacks.Capacity
是一个int
和i
是一个int
。
更改为float g = (float) attacks.Capacity / i;
将其更改为带有浮点数的除法,此技巧称为类型强制转换,您可以在此处阅读更多内容:s://learn.microsoft/en-us/dotnet/csharp/programming-guide/types/casting-and-type-conversions
要比较一个 int 是否是另一个的倍数,请使用余数(mod)运算符。
4 % 1 = 0,4 / 1 的余数。4 % 2 = 0,4 % 3 = 1,4 % 4 = 0。
因此,如果余数 = = 0,则第二个数字是第一个数字的倍数。
if ((attacks.Capacity % i) == 0)
{
multiples.Add(i);
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(77条)