Ответ 1
Использование библиотек J #:
Загрузите J # Распространяемый, чтобы получить библиотеки классов J #. Эта статья подсказывает о том, как использовать ее для получения ZIP-возможностей в ваших проектах .NET, и немного объясняет BigDecimal, но, как объяснил Рамгаунд, статья относительно старая.
После загрузки добавьте vsjlib
в свой проект. Это не сработало для меня на .NET 4.0, но оно работало над проектом 2.0. Он содержит класс BigDecimal и другие. Не уверен, однако, если это дает вам до 100 десятичных знаков, но вы можете попробовать.
Использование MPIR - многоточечные интегралы и рационалы
Вы можете загрузить обертку для MPIR для .NET здесь (версия для скачивания 0.2). Затем выполните следующие действия:
- Добавьте файлы
\wrapper.*.dll
в свой проект, убедитесь, что на каждой из них они скопированы в ваш каталог Debug или Release. - Добавить
\wrapper\xmpir.cs
в ваш проект -
Добавьте в свой проект следующий код:
// set the precision to 512 bits (adjust this to your needs) mpir.mpf_set_default_prec(512); ulong default_prc = mpir.mpf_get_default_prec(); // init vars (important!) mpir.mpf_t val = mpir.mpf_init_set_d(.5); mpir.mpf_t result = mpir.mpf_init_set_ui(0); // calculate 0.5^200 mpir.mpf_pow_ui(result, val, 200); double dresult = mpir.mpf_get_d(result); // convert result to a string, in the form 1.2345 (dot not in output) and exp holding exponent long exp; string sresult = mpir.mpf_get_string(out exp, 10, 0, result); // free vars (important!) mpir.mpf_clear(val); mpir.mpf_clear(result);
Обратите внимание, что переменная sresult
будет содержать только значимые цифры. Вам придется добавить логику для печати экспоненты, или пучок нулей.
Результат 6.2230152778611417071440640537801242405902521687211671331011166147896988340353834411839448231257136169569665895551224821247160434722900390625E-60
A документация PDF файла в полной библиотеке MPIR показывает, как использовать ее более подробно.