У меня есть 6 InputFields в моей сцене. Их тип содержимого десятичный.Сравнение поплавков в Unity
Я извлекаю значения из этих полей ввода и проверяю, равна ли их сумма 100,02. Я вхожу в 16.67 во всех из них.
float fireP = float.Parse(firePercentage.text);
float waterP = float.Parse(waterPercentage.text);
float lightP = float.Parse(lightPercentage.text);
float nightP = float.Parse(nightPercentage.text);
float natureP = float.Parse(naturePercentage.text);
float healthP = float.Parse(healthPercentage.text);
float total = fireP + waterP + lightP + nightP + natureP + healthP;
if (total == 100.02f)
{
Debug.Log("It's equal");
}
else
{
Debug.Log(" Not equal. Your sum is = " + total);
}
Я получаю «Не равный вашей сумме = 100,02» в моем журнале консоли. В любом случае есть идеи, почему это может произойти?
Что такое значение общего в режиме отладки? –
@fubo двойной достаточно. Дело в том, что числа с плавающей запятой должны быть * не * сравниваться для равенства –
http://csharpindepth.com/Articles/General/FloatingPoint.aspx?printable=true – mybirthname