Diskuze: 50-ciferné číslo

C# .NET .NET (C# a Visual Basic) 50-ciferné číslo American English version English version

Avatar
fejjaaas
Člen
Avatar
fejjaaas:

Zdravím vás, mám takový zajímavý problém. Jak mohu počítat s 50-cifernými čísly, když číselný datový typ ulong obsahuje těch cifer max. 20?? Předem děkuji za reakce :-)

 
Odpovědět 16.11.2013 20:40
Avatar
Theodor Johnson
Redaktor
Avatar
Nahoru Odpovědět  +1 16.11.2013 20:43
Přecházím na "Cross-Platform Development"
Avatar
Nahoru Odpovědět 16.11.2013 20:58
Nesnáším {}, proto se jim vyhýbám.
Avatar
fejjaaas
Člen
Avatar
fejjaaas:

Děkuji :-)

 
Nahoru Odpovědět 18.11.2013 12:32
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na fejjaaas
David Čápka:

Od .NETu 4 je přímo obsažený tento datový typ, nemusíš používat žádnou knihovnu.

Editováno 18.11.2013 13:22
Nahoru Odpovědět 18.11.2013 13:22
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
fejjaaas
Člen
Avatar
Odpovídá na David Čápka
fejjaaas:

A jaký je potřeba zadat jmenný prostor?? Našel jsem na webu, tak jsem zkusil tohle: using System.Securi­ty.Cryptograp­hy a BigInteger jsem tam nenašel, vím že je chyba u mě, ale nevím kde :-(

 
Nahoru Odpovědět 18.11.2013 16:48
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na fejjaaas
David Čápka:

V Cryptography určitě nebude, co by tam dělal? Je v System.Numerics. Když nevíš namespace, Visual Studio ti ho doplní samo, stačí na ten podtržený výraz kliknout.

Nahoru Odpovědět 18.11.2013 16:52
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
coells
Redaktor
Avatar
Odpovídá na David Čápka
coells:

V projektu chybí potřebné DLL, postup pro přídání je následující:

  1. klikni pravým tlačítkem na "References" v projektu (v Solution Exploreru)
  2. vyber si z menu "Add Reference"
  3. v otevřeném okně se přepni na levou záložku ".NET"
  4. najdi si knihovnu "System.Numerics" a přes OK ji přidej do projektu

Teď už budeš mít namespace System.Numerics k dispozici.

 
Nahoru Odpovědět  +1 18.11.2013 17:51
Avatar
coells
Redaktor
Avatar
coells:

Čísla o 50ti číslicích jsou ještě malá, takže BigInteger stačí, ale pokud bys někdy potřeboval čísla přesahující tisíce nebo miliony číslic, pak existuje knihovna GMP (napsaná v C) včetně C# wrapperu, která umí velkou spoustu funkcí a velice rychle počítá i obrovská čísla.

http://gnumpnet.codeplex.com/

 
Nahoru Odpovědět 18.11.2013 17:56
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na coells
Jiří Gracík:

Můžu technickou? Proč by někdo chtěl pracovat s číslem který má miliony číslic :D? Neříkám že je to blbost, jenom mě nenapadá žádný důvod.

Nahoru Odpovědět 18.11.2013 17:59
Creating websites is awesome till you see the result in another browser ...
Avatar
Odpovídá na coells
Luboš Běhounek (Satik):

DotNetí BigInteger by měl umět i čísla o miliónech číslic.

Nahoru Odpovědět 18.11.2013 18:02
:)
Avatar
coells
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
coells:

To ano, zkus si je ale vynásobit nebo hledat prvočinitele nebo jednoduše převést číslo z desítkové do šestnáckové soustavy... Složitější výpočty mohou trvat i hodiny.

V jedné aplikaci jsem potřeboval hledal společné dělitele poměrně velkých čísel a bylo jich mnoho. BigInteger mi odpověď nedal ani za hodinu. GMP bylo hotové za minutu.

GMP umí obrovskou spoustu funkcí, které jsou implementované s ohledem na rychlost. Ale jak jsem řekl, pro 50 číslic je BigInteger dostačující.

 
Nahoru Odpovědět 18.11.2013 18:06
Avatar
coells
Redaktor
Avatar
Odpovídá na Jiří Gracík
coells:

Třeba při testování hustoty informace v souboru s uniformním rozložením dat. :-D

 
Nahoru Odpovědět 18.11.2013 18:09
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na coells
Jiří Gracík:

Fajn, jsem teď o mnoho chytřejší(ir.) :D

Nahoru Odpovědět 18.11.2013 18:25
Creating websites is awesome till you see the result in another browser ...
Avatar
coells
Redaktor
Avatar
Odpovídá na Jiří Gracík
coells:
:-D

V podstatě je to jednoduché. Máš veliký soubor s náhodnými daty a chceš zjistit, jestli soubor zůstane náhodný, i když se na něj podíváš z jiného úhlu. K tomu se používají opravdu, ale opravdu veliké polynomy a zkouší se, jestli náhodou v nějakém případě není soubor méně náhodný. Já jsem to používal při analýze dat pro velice specializovanou kompresi.

 
Nahoru Odpovědět  +1 18.11.2013 18:40
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na coells
Jiří Gracík:

super, díky za snahu, teď jsem o něco chytřejší :) (!=ir. :D )

Nahoru Odpovědět 18.11.2013 21:04
Creating websites is awesome till you see the result in another browser ...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.