Dividir números decimales

Buenos días; he estado haciendo la división entre los números Dividendo=300200,06, y divisor=9,909, y no termino de obtener una solución exacta....

Le agradecería me dé una solución..

gracias por anticipado...

Respuesta
1

Mirando el historial he visto que esta pregunta ya la contesté hace unos meses. Intentabas hacer la división con una hoja de Excel. Entonces ya vimos que la división estaba bien y ese era el resto.

Pregunta anterior

¿Entonces quieres obtener la respuesta exacta?

Piensa que podría ser una sucesión infinita de cifras. Por tratarse de un número racional tendría un ciclo que se repetiría, pero estás usando 9909 de divisor, y eso significa que en peor de los casos el ciclo podría ser de hasta 9909 cifras, no creo que llegue a eso pero podría ser.

La calculadora de Windows 7 puesta en forma científica es bastante buena, el resultado que da es:

30295.696841255424361691391664144

No se ve ningún atisbo de repetición de ciclo. Se que hay calculadoras mejores, pero las que conozco son de pago y puede ser que tampoco llegaras a ver el ciclo que se repite.

Si quieres que llegue más lejos, creo que podría darte el resultado exacto, pero no sé cuánto tiempo me costaría hacerlo y si no fuera fácil tendría que aplazar el trabajo para contestar a otros usuarios.

Pues ya lo he resuelto con un pequeño programa y algo de teoría que he desarrollado.

La teoría ya la describí en otro problema que me pusieron y es esta.

Dado un número racional a/b lo simplificaremos al máximo dividiendo numerador y denominador por el máximo común divisor de ellos. Luego sacaremos los factores primos del denominador simplificado y entonces:

i) Si los factores primos son solo 2 y/o 5 el numero racional es decimal exacto.

Ii) Si ni el 2 ni el 5 son factores primos del denominador simplificado y este es mayor que 1 entonces el número racional a/b es decimal periódico puro

Iii) Si hay algún factor 2 o 5 y otro que no es ninguno de los dos entonces es decimal periódico mixto.

Esto no es obligatorio saberlo, opero va a simplificar algo el programa y nunca está mal saberlo.

Entonces nosotros tenemos la división:

300200.06 / 9.909

Eso es lo mismo que el número racional

300200060 / 9909

Y la descomposición en factores primos realizada con el programa Máxima es:

30020000 = 2^2 · 5 · 127 · 118189

9909 = 3^3 · 367

NO hay factores comunes, luego no puede simplificarse.

El denominador no tiene factores 2 ni 5. Luego el número es periódico puro. Eso quiere decir que el resto que hay justo antes de sacar el primer decimal será el primero que se repita cuando se acabe el periodo. Ese resto que se repetirá es 6905

Y el cálculo del periodo se hace con un programa de ordenador que he escrito en FreePascal.

program Project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
const
RINI = 6905;
DIVI = 9909;
var
r,i,c: integer;
begin
i:=6905;

write('30295.');

repeat
write ((i*10) div DIVI);
i := (i*10) mod DIVI;
inc(c,1);
until i = RINI;
writeln;
writeln(c,' decimales');
readln;
end.

Y el resultado que aparece es:

30295.6968412554 2436169139 1664143707 7404379856 6959329902

1091936623 2717731355 3335351700 4743162781 3099202744

9793117368 0492481582 3998385306 2872136441 6187304470

6832172772 2272681400 7467958421 6368957513 3716823090

1200928448 8848521546 0692299929 3571500655 9693208194

5705923907 5587849429 8112826723 1809466141 8912100111

0101927540 6196387122 8176405288 1219093753 1536986577

8585124634 170955...

366 decimales

Ese es el periodo, luego vuelven a repetirse los 366 decimales 69684 ... 0955 y así indefinidamente.

Si no hubiéramos usado esa teoría que di no sabríamos seguro cuál que se iba a repetir el primer decimal y tendríamos que guardar todos los restos y comparar cada vez el resto obtenido con todos los anteriores. Eso complicaría algo el programa. Aunque en alguna otra división seguro que habrá que hacerlo.

Y eso es todo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas