Sameer Hussain Sameer Hussain - 1 month ago 6
C# Question

If statement not working checking float value

I have 6 InputFields in my scene. Their content type is decimal.

I fetch values from these input fields and check if their sum is equal to 100.02. I enter 16.67 in all of them.

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);
}


I am getting " Not equal. Your sum is = 100.02" in my console log.
Anyways has any idea why this might be happening ?

Answer

The nearest float to 16.67 is 16.6700000762939453125.

The nearest float to 10.02 is 100.01999664306640625

Adding the former to itself 5 times is not exactly equal to the latter, so they will not compare equal.

In this particular case, comparing with a tolerance in the order of 1e-6 is probably the way to go.

Comments