Как разделить целые числа и не получить 1 - PullRequest
1 голос
/ 29 мая 2020

Просто простая консольная программа на c#. Ответ всегда равен 1, но я хочу, чтобы ответ всегда был целым числом, здесь только целые числа.

        Console.Write("Ange dagskassa (kr): ");
        string inlasning = Console.ReadLine();
        int dagskassa = int.Parse(inlasning);

        Console.Write("Ange nuvarande lunchpris (kr): ");
        string inlasning2 = Console.ReadLine();
        int lunchpris = int.Parse(inlasning);

        double antalGaster = dagskassa / lunchpris;

        Console.WriteLine("Antal gäster: " + antalGaster + "st.");

Ответы [ 2 ]

3 голосов
/ 29 мая 2020

Проблема здесь в том, что вы дважды конвертируете одно и то же число в две разные переменные, а затем делите их, поэтому ответ всегда будет 1:

int dagskassa = int.Parse(inlasning);
int lunchpris = int.Parse(inlasning);  // You're parsing the same input as before

Чтобы решить эту проблему, преобразовать ввод секунд для цены обеда:

int dagskassa = int.Parse(inlasning2);  // Parse the *new* input instead
0 голосов
/ 29 мая 2020

Чтобы все вышесказанное сработало, вам нужно будет удвоить свои инты. Например,

int i = 1;
int j = 2;
double _int = i / j; // without casting, your result will be of type (int) and is rounded
double _double = (double) i / j; // with casting, you'll get the expected result

В случае вашего кода это будет

double antalGaster = (double) dagskassa / lunchpris;

Чтобы округлить до наименьшего целого числа для подсчета голов, используйте Math.Floor ()

double antalGaster = Math.Floor((double) dagskassa / lunchpris);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...