C# 不以除法计算浮点数的统一
我试图在统一中找到一个数的倍数。我试图找到它的方法是,我有一个for循环遍历该数字,如果数字/I等于Mathf.Round(数字/I),那么我将其作为倍数计算,但它只计算每个数字,当我尝试调试时。记录数字/I,它只将结果作为int。以下是代码: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 {
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);
}