Prawidłowe zaokrąglenie do powyżej 22 miejsc po przecinku.

0

Trafiłem na codewars na katę w której jako input podawany jest dzielnik dla jedynki. Następnie trzeba obliczyć długość cyklu okresu. Wszystko bungla, tylko problem z wartosciami dla np 1/69 - dla np. floata z precyzja do 25 miejsc to -> 0.0144927536231884059730879 < JEDNAK nie jest to wartość prawidłowa , która tak naprawde powinna wynieść -> 0.0144927536231884057971 0144927536231884057971 < Przez tą niedokładność otrzymuje nieprawidłową długość cyklu ,powinno być 22. Jak uzyskać prawidłową precyzje? Wiem że coś trzeba kombinować w strone konwersji do stringów i rozbiciu liczby na mniejsze wartości. Za wszelkie wskazówki będę wdzięczny. Pozdrawiam!

0

Rzuć okiem np. na GMP.

0
Patryk27 napisał(a):

Rzuć okiem np. na GMP.

Rzuciłem okiem i niestety na serwisie codewars implementacja tego nie przejdzie.

0

Zwykle na takich stronkach trzeba się popisać jakimś algorytmem, a nie umiejętnością konwersji na string.
To przeczytałeś?
https://en.wikipedia.org/wiki/Repeating_decimal

0

Poza cytowaną wyżej (@vpiotr) wikipedią, Zobacz również tu:
https://eli.thegreenplace.net/2009/02/25/project-euler-problem-26/
I tu:
http://mathworld.wolfram.com/DecimalExpansion.html
To powinno wystarczyć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1