Я хочу представить множество десятичных цифр иррационального числа, такого как sqrt (2) или cos (23). Например, мне нужно показать первые 100 000 десятичных цифр sqrt (2), это возможно в C# ?, как я могу это сделать?Представляют собой очень много десятичных знаков иррационального числа
-1
A
ответ
0
Я решил эту проблему с GNU MPFR библиотеки, в частности, с помощью c# wrapper Любош Hemala, то я кодировать алгоритм для N-й корней.
public static void Nth_Root(ref StringBuilder Output,ref long ComaPos, String Radicand, String Index, ulong Precision,int NBase)
{
// (1/Input Index) = N_Index
Decimal D_index = Convert.ToDecimal(Index, new CultureInfo("en-US"));
D_index = 1.00m/D_index;
String N_Index = D_index.ToString(new CultureInfo("en-US"));
//Calculating Precision
Decimal Prec02 = Precision * 3.31125m;
ulong Prec03 = Convert.ToUInt64(Prec02);
int Prec04 = Convert.ToInt32(Precision);
// Declaring MPFR Variables
var Rad = new mpfr_struct();
var Ind = new mpfr_struct();
var Res = new mpfr_struct();
MPFRLibrary.mpfr_init2(Rad, 1000LU);
MPFRLibrary.mpfr_init2(Ind, 1000LU);
MPFRLibrary.mpfr_init2(Res, Prec03);
//String inputs to MPFR variables
MPFRLibrary.mpfr_set_str(Rad, Radicand, 10, (int)Rounding.AwayFromZero);
MPFRLibrary.mpfr_set_str(Ind, N_Index, 10, (int)Rounding.AwayFromZero);
//Calculating Power of Radicand to the N_Index
var sb = new StringBuilder(Prec04);
long expptr = 0;
MPFRLibrary.mpfr_pow(Res, Rad, Ind, (int)Rounding.AwayFromZero);
//Converting MPFR Result to StringB
MPFRLibrary.mpfr_get_str(sb, ref expptr, NBase, 0, Res, (int)Rounding.AwayFromZero);
Output = sb;
ComaPos = expptr;
}
0
AFAIK (пожалуйста, любой читатель поправит меня, если я ошибаюсь), для этого нет встроенного типа. Однако в качестве обходных путей:
- answer here с некоторой системой для этого.
- Используйте BigInteger и сделайте все сами.
- BigRational упомянутый here.
Вы ищете 'типа BigDecimal'. – SLaks
Это зависит от числа - если вы можете найти серию Тейлора или другой метод для вычисления числа, то да, это возможно. Не _simple_, но _possible_. –
Возможный дубликат http://stackoverflow.com/questions/10359372/is-there-a-bigfloat-class-in-c – Georg