2013-09-09 4 views
-3

Когда мы разделим 5 на 2 мы получили десятичное число: 2,5Округление десятичного числа вниз

То, что я хочу, чтобы делить числа INTEGER на 2, а не десятичные числа, а не используя десятичный оператор делителя /.

Тогда я хочу, чтобы это приводит, например: 5/2 = 2, 9/2 = 4, 11/2 = 5, и т.д. ...

+0

Итак, вы хотите всегда округлить, а не вверх или всегда округлить к нулю, или использовать округление банкиров, или что? – Servy

+0

звучит как 'Math.Round (5.0/2.0, MidpointRounding.ToEven)' будет делать трюк –

+0

Вы говорите всего 2.5 и ниже раундов вниз и 2.6 и выше округляет? Или все от 2.0 до 2.9999999 ... округляется до 2.0? –

ответ

5

Для выполнения целочисленного деления в VB вместо десятичного деления вам необходимо использовать правильный оператор.

/ Оператор предназначен для десятичной деления. Оператор \ предназначен для целочисленного деления.

1/2 'results in 0.5 
1 \ 2 'result in 0 
+0

of the course Я знал операторы divisor, но когда я пытался «усечь», я получаю округленное число, которое почему следующий, который я сделал, проверяется с помощью Math Class, но я снова тестировал его, потому что я видел ваш комментарий, и теперь он работал нормально, возможно, я ошибся с оператором divisor или что-то еще, спасибо за вашу помощь. – ElektroStudios

4

Простой способ заключается в использовании негатив раунд негатива.

+0

Извините, я не понимал, вы имеете в виду tu использовать отрицательные значения? Я попробовал, но не получил желаемого результата – ElektroStudios

+0

@ElektroHacker Что-то вроде: '-round (-n)' –

2

System.Math.Truncate должен делать то, что вы хотите. например, int result = (int) Math.Truncate (9/2.0);

+0

см. Мое обновление, и спасибо – ElektroStudios

+0

Не нужно называть 'Truncate'. Приведение к 'int' само усекает значение. Еще лучше, вы могли бы просто сделать целочисленное деление в первую очередь, а не выполнять все усилия по выполнению деления с плавающей запятой, чтобы проигнорировать результат. – Servy

+0

@Servy: Да - конечно - недостаточно кофеина еще этим утром. –

0

Есть 2 довольно простых способа сделать это, которые приходят мне на ум.

  1. Math.Truncate() функция

  2. Просто переключите от / символа к символу \. Это чистое целочисленное деление, как вы ищите, и автоматически усекает ваш ответ до последнего целого числа.

Я рекомендовал бы вариант 2, потому что я уверен, что он перестает делать расчеты, когда он доберется до последнего полного целого, а не дело с любыми десятичными знаками на всех (в прошлом тестирования и увидеть первый признать это в конце целого числа), а функция Math.Truncate - нет. Если кто-то знает наверняка, я был бы рад узнать.