2012-02-12 16 views
7

Estoy tratando de almacenar pi a alrededor de 200 lugares decimales, erlang lo asocia a alrededor de 15 dígitos, ¿cómo puedo conservar el original y hacer que se use en otros cálculos?Erlang y Big Numbers

1> P = 3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513 
282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233 
786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367 
892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351 
885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467 
669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112 
129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253 
344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781 
857780532171226806613001927876611195909216420198938095257201065485863278865936153381827968230301952035301852968995773622 
599413891249721775283479131515574857242454150695950829533116861727855889075098381754637464939319255060400927701671139009 
848824012858361603563707660104710181942955596198946767837449448255379774726847104047534646208046684259069491293313677028 
989152104752162056966024058038150193511253382430035587640247496473263914199272604269922796782354781636009341721641219924 
586315030286182974555706749838505494588586926995690927210797509302955321165344987202755960236480665499119881834797753566 
369807426542527862551818417574672890977772793800081647060016145249192173217214772350141441973568548161361157352552133475 
741849468438523323907394143334547762416862518983569485562099219222184272550254256887671790494601653466804988627232791786 
0857843838279679766814541009538837863609506800642251252051173929848960841284886. 
3.141592653589793 
2> P. 
3.141592653589793 
+0

"números grandes" es engañoso. pi es un número bastante pequeño; lo que está buscando es una gran cantidad de dígitos significativos, no un gran número. ¿Por qué quieres hacer esto? Un número de punto flotante no puede contener tanta precisión. – geoffspear

+0

No es específico de erlang: siempre puedes almacenar una cantidad limitada de dígitos, por lo que puedes diseñar una clase/struct/pair/whatevererlangoffers que represente una fracción que luego se usa como aproximación para pi. – phimuemue

Respuesta

16

Mientras Erlang tiene arbirary grandes números enteros, números de punto flotante se representan como IEEE 754 dobles. No hay un tipo de punto flotante incorporado con precisión arbitraria en Erlang.

Si necesita cálculos flotantes con precisión arbitraria, generalmente debe recurrir a lenguajes como Mathematica o MAPLE.

Puede construir sus propios flotantes de precisión arbitrarios en Erlang con bastante facilidad, sin embargo, almacenándolos como tuplas de dos enteros: uno para la fracción y otro para el exponente. Luego debe escribir sus propias funciones aritméticas y no puede usar los operadores normales.