Вопрос по c#, visual-studio-2010 – Чрезвычайно основное уравнение деления не работает в c #

2

Я не могу получить это, чтобы разделить на десятичное число. Округление до значения 0.

<code>    private void button24_Click(object sender, EventArgs e)
    {
        double x = 0;

        x = 1 / 2;

        ans.Text = x.ToString();
    }
</code>

Когда я отлаживаюсь, x равен нулю, прежде чем он будет отправлен в текстовое поле «ans.»

Я пытался .. и строковая переменная все еще равна нулю

<code>double x = 1/5;

string displayX = x.ToString("0.0000");
</code>

Ваш Ответ

3   ответа
7

целочисленное деление и это ожидаемые результаты.

double x = 1.0 / 5;  // this will not perform integer division
double x = 1/5;  // this does  (1/5 = 0).  
double x = 1D / 5; // this will not because 1 is treated as a double
Я даю этот ответD за неправильный суффикс для двойного литерала.
@ConradFrix: чёрт возьми ... ха!
Я знал, что это будет что-то простое, смеется. Это сработало. Спасибо, сэр. dright
@AustinSalonen хорошо вы хорошо объяснили, почему его 0 иD правильный суффикс для двойного литерала, поэтому я пытался быть смешным. Так много для этого: P
@ConradFrix: Спасибо, но я на самом деле не использую суффиксы, так что по этому критерию я с треском проваливаюсь (так что D слишком хорош).
1

Замените double x = 1/5 на double x = 1.0 / 5, и это должно исправить это. Поскольку оба числа, которые вы делите, являются целыми числами, оно все равно обрабатывает их как целое число, а не как двойное число. Когда вы продумываете логически, в этом есть какой-то смысл - он выполняет деление в любой форме, в которой находятся эти числа, а затем сохраняет его в переменной; тип переменной не имеет значения для фактического уравнения.

(Я понимаю, что уже есть другие ответы, но, надеюсь, это поможет вам понять, почему проблема существует.)

2

Вы можете сделать одно из следующего:

double x = 1;
double y = 1.5;

double ans = x / y;
Кроме того, вы всегда можете сказать, что я прав, независимо от контекста.
Обновления / изменения в ответ на комментарий всегда стоит в моей книге.
@Payo я обновил свой ответ, вы правы.
Я не вижу смысла использованияConvert.ToDouble() в этом случае. Это может даже смутить читателей, если они заменят х / у на целые (как это сделал ОП).

Похожие вопросы