Contenido
Esta estructura (BigFrac) sirve para trabajar con números fraccionarios, es decir, números
"no enteros" pero que no usan la coma flotante, por ejemplo, esta estructura trabaja en el formato
1/3, pero no 0.3333333.
La precisión de los números la da la estructura BigNum que
como ya sabrás es par trabajar con números enteros de gran precisión.
Si lo que quieres es trabajar con números en formato coma flotante, te recomiendo que veas la
estructura BigFloat.
Por lo poco que sé de estos temas, (si quieres saber mucho de números, te recomiendo el sitio de
mi colega May en TeladeAraña
que trata de todo esto de
los números explicado claramente, es decir para que hasta yo me entere ),
cuando se trabajan con números fraccionarios, éstos se suelen simplificar, es decir, el número 20/4
es lo mismo que 10/2 o que 5, por tanto si se puede, se simplifica. En caso de que no se pueda
simplificar al máximo, por ejemplo, 14/6 se simplifica a 7/3 pero no a 3.5 ya que esta clase no
maneja números en coma flotante.
Como te decía, esto es lo normal, pero para aquellos que no quieran que se simplifiquen he creado
una constante que sirve para eso: SimplificarOperaciones que de forma predeterminada tiene un
valor True, pero que puedes cambiar a False cuando no quieras que se simplifiquen.
De la misma forma, al comparar los valores de este tipo, se deben simplificar antes de
compararlos, ya que si quieres comparar 20/4 con 10/2 debería dar un valor verdadero al comparar la
igualdad (si ya están previamente simplificados no hay problemas, ya que el valor interno será 5),
para poder hacer todas esas comparaciones adecuadamente, el valor de
SimplificarOperacionesComparacion debe ser True (que es el valor por defecto).
Sé que estos campos no deberían ser manipulados desde fuera, pero... ahí están, solo que lo
recomendable es que ambos tengan un valor True si quieres que todo funcione como es debido.
Aquí tienes el código fuente de esta estructura (BigFrac).
Si quieres ayudar a mejorarla, léete lo que digo en la página principal de
esta sección de números de gran precisión usando LibTomMath.