stringtranslate.com

tipo de datos racionales

Algunos lenguajes de programación proporcionan un tipo de datos racional incorporado (primitivo) para representar números racionales como 1/3 y -11/17 sin redondear y hacer aritmética con ellos. Algunos ejemplos son el ratiotipo de Common Lisp y tipos análogos proporcionados por la mayoría de los lenguajes para cálculo algebraico , como Mathematica y Maple . Muchos lenguajes que no tienen un tipo racional incorporado aún lo proporcionan como un tipo definido por biblioteca .

Representación

Una variable o valor de ese tipo suele representarse como una fracción m / n donde myn son dos números enteros , ya sea con una precisión fija o arbitraria . Dependiendo del idioma, el denominador n puede limitarse a ser distinto de cero y los dos números pueden mantenerse en forma reducida (sin divisores comunes excepto 1).

Los lenguajes que admiten un tipo de datos racional generalmente proporcionan una sintaxis especial para construir dichos valores y también amplían las operaciones aritméticas básicas ('+', '−', '×', '/', potencias enteras ) y comparaciones ('=', '<', '>', '≤') para actuar sobre ellos, ya sea de forma nativa o mediante las funciones de sobrecarga del operador proporcionadas por el lenguaje. El compilador puede traducir estas operaciones en una secuencia de instrucciones de máquina enteras o en llamadas a la biblioteca . El soporte también puede extenderse a otras operaciones, como formatear, redondear a un valor entero o de coma flotante , etc. Como en matemáticas, esos lenguajes a menudo interpretan un valor entero como equivalente a un valor racional con un denominador unitario.

Ayuda de idioma

Biblioteca incorporada o central :

Con bibliotecas externas :

ceceo común

Common Lisp proporciona un tipo de datos numéricos para números racionales de tamaño arbitrario: RATIO . [7]

 1/3 1/3  

El tipo de número racional es RATIO:

 ( tipo de 1/3 ) RELACIÓN   

La división de dos números enteros puede dar como resultado un número racional y la multiplicación de un número racional puede dar como resultado un número entero:

 ( / 6 8 ) 3/4 ( * 3/4 ​​16 ) 12         

El numerador y el denominador se pueden obtener usando funciones homónimas, que reducen una forma racional a canónica y calculan el numerador o denominador de esa forma respectivamente: [8]

 ( numerador 12/16 ) 3 ( denominador 12/16 ) 4       

Calcular con números enteros grandes que devuelvan un número racional grande:

 ( / ( 1- ( 2 200 ) ) ( 1- ( 2 43 ) )) 1606938044258990275541962092341162602522202993782792835301375/8796093022207          

Clojure

(imprimir (+ 1/10 2/10)) ⇒ 3/10

Julia

julia> 1 // 10 + 2 // 10 3//10   

Haskell

En el módulo Data.Ratio

(1 % 10) + (2 % 10) ⇒ 3 % 10

Raqueta (esquema PLT)

> ( + 1/10 2/10 ) 3/10   

rakú

Raku proporciona Rattipo por defecto.

mi  $v = 0,2 ; diga  "{$v} es {$v.^name} y tiene numerador {$v.numerator} y denominador {$v.denominator}" ; # ⇒ 0,2 es Rata y tiene numerador 1 y denominador 5
digamos  0,1 + 0,2 # ⇒ 0,3
digamos ( 0,1 + 0,2 - 0,3 ). fmt ( "%.17f" ) # ⇒ 0,00000000000000000
digamos  1 / ( 0.1 + 0.2 - 0.3 ) # ⇒ Intente dividir por cero al obligar a Rational a Str

Rubí

Usando una sintaxis especial en 2.1 o posterior:

irb( principal ):001:0 > pone 1/10 r + 2/10 r 3/10 = > nulo   

Referencias

  1. ^ "Vocabulario/Precisiones numéricas - J Wiki".
  2. ^ "Números complejos y racionales: documentación de desarrollo de Julia Language". docs.julialang.org . Archivado desde el original el 15 de julio de 2012.
  3. ^ "Informe de la biblioteca Haskell 98: números racionales".
  4. ^ "Clase Rata".
  5. ^ "Clase FatRat".
  6. ^ "Fracciones - Números racionales - Documentación de Python 3.10.0".
  7. ^ HyperSpec común de Lisp: RELACIÓN
  8. ^ Función NUMERADOR, DENOMINADOR en Common Lisp HyperSpec