C# 不以除法计算浮点数的统一

C# 不以除法计算浮点数的统一,c#,unity3d,C#,Unity3d,我试图在统一中找到一个数的倍数。我试图找到它的方法是,我有一个for循环遍历该数字,如果数字/I等于Mathf.Round(数字/I),那么我将其作为倍数计算,但它只计算每个数字,当我尝试调试时。记录数字/I,它只将结果作为int。以下是代码: using System.Collections; using System.Collections.Generic; using UnityEngine; public class AIpatternPredict : MonoBehaviour {

我试图在统一中找到一个数的倍数。我试图找到它的方法是,我有一个for循环遍历该数字,如果数字/I等于Mathf.Round(数字/I),那么我将其作为倍数计算,但它只计算每个数字,当我尝试调试时。记录数字/I,它只将结果作为int。以下是代码:

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);
            }
        }
    }
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共课:单一行为
{
公共列表攻击=新列表();
公共int lowerScore;
void Start()
{
列表倍数=新列表();
对于(var i=1;i
float g=attacks.Capacity/i

你的
攻击。容量
int
i
int
。这就是整数除法

改为
float g=(float)攻击。容量/i
将其更改为带浮点数的除法。这种技巧称为类型转换。您可以在这里阅读更多内容:

float g=attacks.Capacity/i

你的
攻击。容量
int
i
int
。这就是整数除法

改为
float g=(float)攻击。容量/i
将其更改为带浮点数的除法。这种技巧称为类型转换。您可以在此处阅读更多内容:

要比较一个int是否是另一个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);
        }

要比较一个int是否是另一个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);
        }