Contenido
Esta estructura sirve para trabajar con números fraccionarios, es decir, usa números al estilo de
1/3 en lugar de números de coma flotante como 0.3333, si es eso lo que buscas, puedes usar la
estructura BigFloat.
Como todas las estructuras de esta librería, internamente se usa el tipo
BigInt, en realidad, esta estructura usa dos valores de ese tipo, uno
para la parte entera y otro para la fracción, por tanto, las cifras que puedes manejar son muy, muy
grandes.
Como ya comenté en la estructura "prima hermana de esta" pero que usa por debajo los números
enteros de LibTomMath, de forma predeterminada los números se simplifican, de forma que si indicas
el número 20/6 al final se quedará en la fracción 10/3 y si la fracción que indicas, es 20/4 al
final se quedará en 5.
Si no deseas ese comportamiento, es decir, no deseas que se simplifiquen las fracciones, tendrás
que asignar un valor False a la propiedad (en realidad es un campo público)
SimplificarOperaciones.
Ese campo está compartido, por tanto, no tendrás que asignarlo en cada objeto que crees, sino que
al asignarle un valor se usará globalmente por todas las estructuras que tengas en memoria.
De forma independiente, existe otro campo que se usa para simplificar las operaciones cuando se
hacen comparaciones, de forma que aunque el valor del campo que te acabo de comentar tenga un valor
False, las comparaciones se hagan de forma correcta, ya que 20/6 es lo mismo que 10/3 por tanto, al
comparar si son iguales debería dar un valor verdadero.
Pero si quieres hacer las cosas a tu aire, puedes asignar un valor falso al campo compartido
SimplificarOperacionesComparacion, de esa forma, no se simplificarán las comparaciones, aunque
si el valor de SimplificarOperaciones es True, no hará falta que cambies nada, ya que los
valores almacenados se simplificarán y por tanto no deberías tener problemas.
En cualquier caso, no te fíes de usar estas dos propiedades compartidas, ya que es posible que en
un futuro las deje siempre como True y no permita el cambio del valor.
He de aclarar que el F# existe una estructura como esta, que se llama BigNum, pero que yo no
estoy usando, salvo para realizar ciertas operaciones, aunque no todas. En realidad, esta estructura
usa casi el mismo código que la que hice para la otra librería que usa LibTomMath.
Pulsa aquí si quieres ver el código fuente para Visual Basic
2005 de la estructura BigFrac.