[JavaScript][PHP]Ograniczenie miejsc po przecinku |
[JavaScript][PHP]Ograniczenie miejsc po przecinku |
4.02.2018, 16:57:09
Post
#1
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 22.01.2018 Ostrzeżenie: (10%) |
Mam tego typu problem że co w 5 wyniku tworzy mi się liczba która nie wiem skąd się wzięła i jak ją ograniczyć.
kod:
Przykłady wyników po użyciu alert(coord_slug); : lnt = 52.1 lng = 18.5 land_size = 0.1 wynik coord_slug : 52.1,18.5 działa. Liczby wyświetlają się tak jak są w bazie zapisane lnt = 52.1 lng = 18.4 land_size = 0.1 wynik coord_slug: 52.1,18.400000000000002 nie działa. Wyświetla się jakiś dziwny wynik Czy ktoś wie jak temu problemowi zaradzić? Czy dopisać trzeba do tego coś co ograniczy ilość liczb po przecinku? Jeśli land size wynosi np. 0.5 , 1 czy 2 wszystko śmiga bez problemu Proszę pomóżcie.. Ten post edytował warland 4.02.2018, 17:22:30 |
|
|
4.02.2018, 17:38:20
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) |
var coord_slug = lat.toString() + ',' + lng.toString();
-------------------- Nie pomagam na pw, tylko forum.
|
|
|
4.02.2018, 17:44:39
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
https://developer.mozilla.org/en-US/docs/We.../Number/toFixed
P.S. Czy tam nie powinno być Math.floor dla ujemnych? Ten post edytował trueblue 4.02.2018, 17:48:12 -------------------- |
|
|
4.02.2018, 18:31:20
Post
#4
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 22.01.2018 Ostrzeżenie: (10%) |
kłopot w tym że to nadal nic nie daje. Zawzięcie mi co 5 pól wywala błąd z tą ilością liczb po przecinku
|
|
|
4.02.2018, 18:36:46
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
To pokaż jak użyłeś, bo ja bym użył tak:
-------------------- |
|
|
4.02.2018, 18:51:06
Post
#6
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 22.01.2018 Ostrzeżenie: (10%) |
teraz to problemem są liczby całkowite.
Jeżeli mam lat=38 i lng 22.2 to mi przy toFixed(1) wywala 38.0 i tworzy też błąd w tym wypadku. Samo rozwiązanie ukróciło liczby po przecinku. Nie działała mi ta opcja z toString. Można by było ewentualnie dopisać zero po przecinku w bazie do liczb całkowitych ale nie uśmiecha mi się grzebanie w 15 tys rekordów Kordy w bazie mają taki zapis w 3 kolumnach.. coord_slug 38,22.4 lat 38 i lng 22.4 Skrypt wyświetla dane gdy dane z coord_slug się zgadzają z lat + lng Ten post edytował warland 4.02.2018, 18:55:36 |
|
|
4.02.2018, 19:03:15
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Nie wiem jaki cudem dla 38 otrzymujesz 38.0.
https://jsfiddle.net/1sd3c61e/ -------------------- |
|
|
4.02.2018, 19:11:11
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
51.9,18.5
-------------------- |
|
|
4.02.2018, 19:13:11
Post
#9
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 22.01.2018 Ostrzeżenie: (10%) |
|
|
|
4.02.2018, 19:18:36
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
52.0,18.5
Ale jeśli Twoim problemem jest porównywanie otrzymanych współrzędnych z tymi w bazie, to po prostu trzymasz je w niepoprawnym formacie. Długość i szerokość to powinny być odrębne kolumny. Typ pola na pewno jakiś numeryczny, a nie znakowy. Na tą chwilę możesz sprawdzać czy parseInt(liczba)==liczba, jeśli tak, to oznacza, że nie ma wartości dziesiętnych i możesz ją przekształcić do postaci całkowitej. -------------------- |
|
|
4.02.2018, 19:49:06
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Zapis jest taki, bo taki jest. Jeśli będziesz zapisywał do bazy danych osobno obydwie współrzędne, to problem zniknie. -------------------- |
|
|
5.02.2018, 00:19:22
Post
#12
|
|
Grupa: Zarejestrowani Postów: 50 Pomógł: 0 Dołączył: 22.01.2018 Ostrzeżenie: (10%) |
udało się to rozwiązać w ten sposób:
W tym przypadku math.round nie dodaje przecinka do liczb całkowitych. Następuje zaokrąglenie liczb dziesiętnych do 1 miejsca po przecinku z dokładnością do 0.1 Dziękuję oczywiście za pomoc w naprowadzeniu mnie na rozwiązanie. Łatwiej było szukać gdy już się coś zajarzyło dzięki podpowiedziom. |
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 13:44 |