Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/50: Рейтинг темы: голосов - 50, средняя оценка - 4.86
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249

Аналог BigInteger для вещественных чисел

07.05.2012, 20:33. Показов 9557. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В библиотеке System.Numerics.dll нашел нужный мне "резиновый" тип данных BigInteger. Теперь новая проблема: нужен такой же только типа BigDouble Может кто в курсе есть ли реализована эта идея и где можно ее взять в свою программу. Спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.05.2012, 20:33
Ответы с готовыми решениями:

Аналог BigInteger в System.Numerics
Привет!Нужно реализовать пользовательский класс для работы с большими числами, аналог BigInteger в System.Numerics, который поддерживает...

Тип данных - аналог BigInteger в C#
Есть ли в билдере такой тип данных, который аналогичен BigInteger в C#?

Операции с длинными строками (аналог BigInteger в Java)
Первый вопрос возник как исключить ограничение на длину вводимой строки. Правильно ли я понимаю, что для реализации этого нужно...

7
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 7
07.05.2012, 20:53
decimal http://msdn.microsoft.com/ru-r... s.90).aspx не подойдёт?
0
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
07.05.2012, 21:00  [ТС]
Цитата Сообщение от flashmozzg Посмотреть сообщение
decimal http://msdn.microsoft.com/ru-r... s.90).aspx не подойдёт?

Ищу "резиновый тип". Вот если в моем калькуляторе пользователь захочет проверить когда же калькулятор "заглючит" и начнет либо очень маленькие числа либо очень большие вещественные числа юзать.
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
07.05.2012, 21:11
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Встроенного резинового нет. Остается только либо писать свой, либо использовать существующие.
Пример простейшей обертки над BigInteger
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public struct BigDecimal {
    public BigInteger Integer { get; set; }
    public BigInteger Scale { get; set; }
 
    public BigDecimal(BigInteger integer, BigInteger scale) : this() {
        Integer = integer;
        Scale = scale;
        while (Scale > 0 && Integer % 10 == 0) {
            Integer /= 10;
            Scale -= 1;
        }
    }
 
    public static implicit operator BigDecimal(decimal a) {
        BigInteger integer = (BigInteger)a;
        BigInteger scale = 0;
        decimal scaleFactor = 1m;
        while ((decimal)integer != a * scaleFactor) {
            scale += 1;
            scaleFactor *= 10;
            integer = (BigInteger)(a * scaleFactor);
        }
        return new BigDecimal(integer, scale);
    }
 
    public static BigDecimal operator *(BigDecimal a, BigDecimal b) {
        return new BigDecimal(a.Integer * b.Integer, a.Scale + b.Scale);
    }
 
    public override string ToString() {
        string s = Integer.ToString();
        if (Scale != 0) {
            if (Scale > Int32.MaxValue) return "[Undisplayable]";
            int decimalPos = s.Length - (int)Scale;
            s = s.Insert(decimalPos, decimalPos == 0 ? "0." : ".");
        }
        return s;
    }
}

Так же можно использовать реализацию BigDecimal из J#. Но потребуется дополнительно ставить его.
3
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9669 / 4822 / 762
Регистрация: 17.04.2012
Сообщений: 9,661
Записей в блоге: 14
07.05.2012, 21:15
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

Вручную делите введённые числа на целую и дробную часть и храните эту связку из двух BigInteger, что-то типа:
C#
1
2
3
4
5
6
7
8
9
10
11
struct BigDouble
{
    public BigInteger BeforePoint {set;get;}
    public BigInteger AfterPoint {set;get;}
 
    // Превратит введёное пользователем число в поле в BigDouble
    public static BigDouble FromString(string t) {
        string res = t.Split(new char[] { ',' });
        return new BigDouble(res[0], res[1]);
    }
}
А ещё лучше - отбросьте такие возможности. Если число выходит за рамки double, просто обрезайте его и куда-нибудь в переменную сохраните количество обрезанных цифр. После выполнения операции просто допишите это количество нулей
1
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
07.05.2012, 21:17  [ТС]
В вашем варианте минимум функционала, который я и так не до конца понимаю, так что о расширении мною и речи быть не может(программу нужно сдать в через 2 дня).
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
07.05.2012, 21:25
Цитата Сообщение от van Persie Посмотреть сообщение
В вашем варианте минимум функционала, который я и так не до конца понимаю, так что о расширении мною и речи быть не может(программу нужно сдать в через 2 дня).
Например можете взять вот эту библиотеку http://sine.codeplex.com/
1
28 / 28 / 10
Регистрация: 10.03.2012
Сообщений: 249
08.05.2012, 23:38  [ТС]
Цитата Сообщение от turbanoff Посмотреть сообщение
Например можете взять вот эту библиотеку http://sine.codeplex.com/
Неплохая, но в ней много "интересностей"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.05.2012, 23:38
Помогаю со студенческими работами здесь

Метод BigInteger.GreatestCommonDivisor (BigInteger, BigInteger)
Как использовать в C# windowsforms метод BigInteger.GreatestCommonDivisor (BigInteger, BigInteger)? Пример кода.

Как делить одно число BigInteger на другое BigInteger, при чем не теряя остаток
Помогите пожалуйста. Надо поделить одно число BigInteger на другое, при чем в результате сохранить весь остаток

Код для нахождения прямого кода для вещественных чисел
#include <iostream> #include <cmath> using namespace std; void cvbnm(double k, double f) { double s; int r; f = modf(k,...

Написать код для сортировки выбором для вещественных, целых чисел и латинских букв
здравствуйте! помогите написать код для сортировки выбором на си для вещественных, целых чисел и латинских букв. вот для целых ...

Перегруженные функции для сложения вещественных чисел; для сложения комплексных чисел
Написать перегруженные функции и основную программу, которая их вызывает. для сложения вещественных чисел; для сложения комплексных чисел...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru