Wyciągnięcie ostatnich cyfr z reszty po przecinku

Podzielność. Reszty z dzielenia. Kongruencje. Systemy pozycyjne. Równania diofantyczne. Liczby pierwsze i względnie pierwsze. NWW i NWD.
Vel
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 21 wrz 2017, o 16:02
Płeć: Mężczyzna
Lokalizacja: Polska

Wyciągnięcie ostatnich cyfr z reszty po przecinku

Post autor: Vel »

Witam serdecznie wszystkich zainteresowanych nietypowymi wyzwaniami!

Zajmuję się właśnie tworzeniem aplikacji mobilnej wykorzystującej lokalizację GPS. Z zawodu jestem projektantem gier i zwykle zajmuję się stroną bezpośredniego budowania gier i aplikacji w oprogramowaniu a nie programuję, jednak tym razem muszę odkryć równanie którego ani ja ani nasz skrypciarz nie potrafimy rozgryźć.

Sprawa dotyczy ekstrakcji ostatnich 3, 4 i 5 cyfry po przecinku.


W detalu: Na bieżąco, z aplikacji otrzymujemy namiary GPS na wysokość i szerokość geograficzną - jest to w naszym przypadku liczba dwucyfrowa z czterema albo pięcioma cyframi po przecinku, np:

19.94501
50.05379

Pozostałe wyniki GPS różnią się jedynie trzema ostatnimi cyframi. Te różnice są za małe aby silnik gry to przetrawił do współrzędnych 3D, dlatego musimy naszym skryptom podsunąć jakieś rówanie które wyciągnie ostatnie cyfry, np:

19.94501 -> 501
50.05379 -> 379
19.9448 -> 480
AB.CDEFG -> EFG


Istnieje w ogóle taka magia równaniowa, aby to osiągnąć?
HelperNES
Użytkownik
Użytkownik
Posty: 70
Rejestracja: 2 lut 2017, o 10:12
Płeć: Mężczyzna
Lokalizacja: Stęszew
Podziękował: 5 razy
Pomógł: 14 razy

Re: Wyciągnięcie ostatnich cyfr z reszty po przecinku

Post autor: HelperNES »

Jeżeli liczby mają do 5 miejsc po przecinku to zrób tak:

Pomnóż liczbę \(\displaystyle{ x}\) przez \(\displaystyle{ 10^5}\) wtedy dostaniesz liczby bez przecinków, potem dla takiej liczby \(\displaystyle{ y=x\cdot10^5}\) weź działanie \(\displaystyle{ y\pmod{1000}}\)

Przykład:
\(\displaystyle{ 19.94501 \cdot 10^5 = 1994501=1994 \cdot 1000+501\equiv501\pmod{1000}}\)
Ostatnio zmieniony 21 wrz 2017, o 21:52 przez Jan Kraszewski, łącznie zmieniany 1 raz.
Powód: Symbol mnożenia to \cdot.
a4karo
Użytkownik
Użytkownik
Posty: 22173
Rejestracja: 15 maja 2011, o 20:55
Płeć: Mężczyzna
Lokalizacja: Bydgoszcz
Podziękował: 38 razy
Pomógł: 3748 razy

Re: Wyciągnięcie ostatnich cyfr z reszty po przecinku

Post autor: a4karo »

A potrafisz sprecyzować jak algorytm na się zachować np na takich liczbach :
12
12.0
12.00
2.001
2.0001
2.00010
?
HelperNES
Użytkownik
Użytkownik
Posty: 70
Rejestracja: 2 lut 2017, o 10:12
Płeć: Mężczyzna
Lokalizacja: Stęszew
Podziękował: 5 razy
Pomógł: 14 razy

Re: Wyciągnięcie ostatnich cyfr z reszty po przecinku

Post autor: HelperNES »

Może to głupie rozwiązanie lecz jeżeli \(\displaystyle{ x\equiv y\pmod{1000}}\) i \(\displaystyle{ y<10}\) To możemy dodać z przodu dwa zera i analogicznie dla \(\displaystyle{ 10\le y<100}\) jedno.

Patrząc natomiast programistycznie, można by było zrobić inaczej. Zamieniając liczbę na przykład \(\displaystyle{ 2.0001}\) na napis "2.0001" i z napisu odpowiednią funkcją wydobyć trzy ostatnie symbole i znowu zamienić na liczbę. To też nie zadziała dla liczb postaci \(\displaystyle{ 12.00}\), lecz wiemy że miejsc po przecinku jest więcej
ODPOWIEDZ