Как получить при делении дробное число?
Получить случайное дробное число
в C# нет функции, которая получает случайное дробное число. Я попробовал написать самостоятельно.
Как получить дробное число при вычислении
Я в принципе знаю ответ, но помощь не помешает. Мне например нужно записать c=1/7. Почему надо в.
Как получить вещественное число при делении целых?
как получить дробное число? 14/5=2 14%5=4 а как сделать чтобы ответ был 2.8. Добавлено.
Программа при делении выдает целое значение а не дробное
Задание: Прибор состоит из трех узлов. При включении прибора с вероятностью P1 появляется.
Сообщение было отмечено Yamakasi009 как решение
Решение
Romalei, я уже решил проблему и еще узнал что не обязательно что бы оба числа были с плавающей запятой, одного хватает и мне это как раз подошло
Добавлено через 3 минуты
Neptyn, если числа плохо делится например как 4 / 9 то твой вариант не работает
Сообщение от Yamakasi009
Сообщение от Yamakasi009
Сообщение от Neptyn
Как получить случайное дробное число в заданном диапазоне
Как получить случайное число с плавающей запятой. Так не получается: Dim cRandom As Random Dim.
Получить нецелое число (2.44 и тд), при делении двух чисел типа Integer
При делении двух чисел (200 и 150) я получаю результат 1, если делю наоборот то 0. 200 и 150 это.
Как получить десячичную дробь при делении?
Как в баше получить результат $(( $a / $b )) в виде десятичной дроби.
Определить произведение элементов, которые при делении на 2 дают такой же остаток как и при делении на 3
Ввести двумерный массив А3×4 . Определить произведение элемен-тов, которые при делении на 2 дают.
Как получить дробное число при делении c
Регистрация на форуме тут, о проблемах пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите восстановить пароль
Поиск по форуму |
Расширенный поиск |
К странице. |
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr.
Q: Whats the object-oriented way to become wealthy?
A: Inheritance
Деление нацело делается обычным оператором "/", но тип обоих операндов должен быть целочисленный (char/short/int/long). Если ты делишь целые числа, но хочешь иметь дробный результат, один операнд нужно привести к float или double, например:
Как получить дроби в целочисленном делении?
Как в C разделить два целых числа и получить ответ типа double или float?
задан 04 июн ’10, 13:06
«десятичное» — это представление (как «шестнадцатеричное», «восьмеричное», «двоичное»), которое применяется к целым или нецелым числам. Вы имеете в виду, я думаю, «получить нецелочисленный результат». — leonbloy
Вот как вы получаете дроби (рациональные числа) с целочисленным делением printf(«%d %d/%d» x/y, x%y, y); . Вы уверены, что вам не нужен нецелочисленный результат? — Brendan
2 ответы
Вам нужно перевести тот или иной float or double .
Конечно, убедитесь, что вы храните результат подразделения в double or float ! Это не принесет вам никакой пользы, если вы сохраните результат в другом int .
Что касается комментария @Chad (» [tailsPerField setIntValue:tailsPer] «):
Не пропускайте двойное или плавающее setIntValue когда у тебя есть setDoubleValue , и т.п. в наличии. Вероятно, это та же проблема, о которой я упоминал в комментарии, когда вы не используете явное приведение типов и получаете недопустимое значение, потому что двойное значение читается как целое число.
Например, в моей системе файл:
потому что double пытались прочитать как int.
Правильно. Преобразуйте целые числа, прежде чем выполнять деление. — ДОК
двойной тп; двойной х; х = тп; //(tn является целым числом) обычно 10 tp = x/fn; // fn также является целым числом (обычно 5), но я все равно получаю 0 — Чад Кариш
@Chad: код выглядит правильно. Как вы определили, что результат равен нулю? Вы делаете что-то вроде printf(«%d», tp) ? Это пытается напечатать содержимое double как int, и вы не получите правильных результатов. Ваш компилятор должен был предупредить вас, если вы это сделали. Для двойной строки формата %lf . — Марк Рушаков
на самом деле он отправляется в gui. tailsPer = tailsNum / ((double)curNum); //tailsper является двойным [tailsPerField setIntValue:tailsPer]; // это в какао — Чад Кариш
Реализация класса «Дробь» на C#
статьи
В своих программах часто приходится работать с вещественными числами. Для их хранения в c# предусмотрены такие вещественные типы, как float, double и decimal. Однако не для кого не секрет, что все вещественные числа в компьютере имеют ограниченную точность. Например, если объявить целую переменную, присвоить ей значение равное двум, а затем извлечь квадратный корень и результат возвести в квадрат, то мы получим число, несколько отличающееся от двух. Чтобы не быть голословным, напишем небольшую программу.
Результат в консоли:
Результат в отладчике:
Результаты показывают, хоть в консоль и вывелось точное значение (из-за особенностей работы метода Console.WriteLine), в действительности оно не такое уж и точное.
Таким образом, мы имеем некоторую погрешность, которая зачастую только мешает, поэтому я предлагаю написать новый тип (а точнее класс) «Дробь», в котором будут реализованы все (ну или почти) действия с дробями. Итак начнем!
Класс Fraction
В классе будет три поля:
- числитель
- знаменатель
- знак
После того, как поля описаны, переходим к конструктору.
Конструкторы
Я предлагаю дать возможность создавать дроби двумя способами:
- явно указав числитель и знаменатель
- указав лишь один числитель, подразумевая, что в знаменателе будет единица
Как Вы успели заметить, ни в одном конструкторе не указывается знак. Сделал я это преднамеренно, с той целью, чтобы во время создания дроби не возникало вопросов насчет знаков числителя и знаменателя. Иными словами, знак будет определяться знаком произведения числителя на знаменатель.
Арифметические операции над дробями
Мы должны написать класс так, чтобы операции над дробями можно было выполнять так же, как и с обычными числами, то есть нам необходимо перегрузить операторы. Для начала мы реализуем сами методы операций, а затем обернем их методами, переопределяющие операторы.
Поиск наименьшего общего знаменателя
Для выполнения операций сложения и вычитания дробей нам понадобится приводить их к общему знаменателю, причем к наименьшему. Наименьшим общим знаменателем двух дробей является наименьшее общее кратное (НОК) их знаменателей. В свою очередь поиск НОК сводится к поиску наибольшего общего делителя (НОД).
Обобщив все вышесказанное, получаем, что нам нужно реализовать два метода:
- возвращающий НОК двух чисел
- возвращающий НОД двух чисел
Метод нахождения наибольшего общего делителя
Метод нахождения наименьшего общего кратного
После написания этих двух методов, можно приступать к написанию методов сложения и вычитания. Однако ввиду того, что действия при этих операциях в основном схожи, то я предлагаю написать один метод, который будет возвращать результат сложения или вычитания дробей, в зависимости от того, какую функцию мы передадим.
Перегрузка арифметических операторов
Как Вы наверняка успели заметить, в только что написанном коде используются два неописанных ранее методов:
- GetReverse — возвращает дробь, обратную данной
- GetWithChangedSign — возвращает дробь с противоположным знаком
Операции сравнения
Для перегрузки операторов сравнения необходимо переопределить методы Equals и GetHashCode. Первый будет возвращать значение истины, если заданный объект равен текущему. Второй же метод возвращает хэш-код для текущего объекта.
Перегрузка операторов «==» и «!=»
Хорошо. Сравнивать на равенство дроби уже умеем. Теперь сделаем так, чтобы можно было выяснить, какая из двух дробей больше. Как и ранее, пишем вспомогательный метод.
Перегрузка операторов «>», «<«, «>=», «<=»
Вот и все. Класс готов. Ниже представлен скрин работы программы, в которой тестируются все публичные методы.