multiplication of number has different results

Guys i dont know how is this possible that there are different results of my code.
Here in C#

for (int i = 0; i < divider_count.Count; i++)
{
    if (divider_count[i] % 2 == 0)
    {
        sqrt_factor *= (int)Math.Pow(divider_number[i], divider_count[i] / 2);
    }
    else if (divider_count[i] % 2 != 0 && divider_count[i] > 2)
    {
        sqrt_factor *= (int)Math.Pow(divider_number[i], (divider_count[i] - 1) / 2);
        sqrt_root *= divider_number[i];
    }
    else
    {
        sqrt_root *= divider_number[i];
    }
}

And here in Java

        for (int i = 0; i < divider_count.size(); i++)
        {
            if (divider_count[i] % 2 == 0)
            {
                sqrt_factor *= Math.pow(divider_number[i], divider_count[i] / 2);
            }
            else if (divider_count[i] % 2 != 0 && divider_count[i] > 2)
            {
                sqrt_factor *= Math.pow(divider_number[i], (divider_count[i] - 1) / 2);
                sqrt_root *= divider_number[i];
            }
            else
            {
                sqrt_root *= divider_number[i];
            }
        }

Could you tell me where i have wrong because code looks like the same, but the final result of c# dont equal of final result in java

%d bloggers like this: