Преобразование int в float и отображение результата не работает? - PullRequest
1 голос
/ 07 ноября 2011

Итак, у меня есть метод в классе Rational, который передается в два целых числа, и я хочу вернуть число с плавающей точкой, однако этот метод возвращает 0, и я понятия не имею, почему!

public static float DisplayFloat(int numer, int denom)
        {
            float result = numer / denom;
            return result;

        }

это называется так в моем основном:

Console.WriteLine(Rational.DisplayFloat(12, 36));

Есть идеи? У меня нет ошибок в Visual Studio, поэтому я ошеломлен.

Ответы [ 3 ]

6 голосов
/ 07 ноября 2011

numer и denom оба являются целыми числами, поэтому, когда вы делите одно на другое, результатом будет int;результат затем конвертируется в число с плавающей точкой, но уже слишком поздно, потому что вы уже потеряли дробную часть.Если вы хотите получить результат с плавающей точкой, перед использованием делите один из операндов:

float result = (float)numer / denom;
2 голосов
/ 07 ноября 2011

вам нужно разыграть одно из целых чисел, чтобы плавать

public static float DisplayFloat(int numer, int denom)
{
    float result = (float)numer / denom;
    return result;
}
1 голос
/ 07 ноября 2011

Вам необходимо преобразовать числитель или знаменатель в число с плавающей точкой;в противном случае деление выполняется только с использованием целочисленной математики.Например:

float result = float(numer) / float(denom);

MSDN имеет больше информации. .Также см. этот ответ на вопрос Почему операторы деления (/) ведут себя по-разному в VB.NET и C #?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...