![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Mam następujący problem. Kod:
daje wyniki:
Skąd różnice? Jak to zgrać? -------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Jakiego typu masz to pole w bazie?
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
INT.
-------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
W PHP robisz round do 0
W MySQL round do 2 Nie wiem czy to pomoże ale warto spróbować. Ew. http://stackoverflow.com/questions/1044658...round-weird-bug -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
Php inaczej zapewne zaokrangla niz mysql. Dla malych liczb tego noe widac a potem juz sa przeskoki. A jak to rozwiazac to nie mam pomuslu
![]() To jest ten problem ktory potem wychodzi przy == vs === ![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Poprzestawiałem co nieco, żeby było identycznie:
I ta sama różnica. -------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 70 Pomógł: 4 Dołączył: 16.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
najlepiej napisać własną funkcję zaokrąglającą w mysql, jeśli nie chcesz mieć takich kwiatków:
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
najlepiej napisać własną funkcję zaokrąglającą w mysql, jeśli nie chcesz mieć takich kwiatków: I zakładałbym wątek, gdybym był tak zaawansowany? -------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 332 Pomógł: 10 Dołączył: 13.03.2014 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Ogólnie php nie zaokrągla liczb matematycznie. Nie wiem za bardzo skąd się to bierze, ale ostatnio musiałem się z tym zmierzyć. Kodu podać Ci nie mogę ale jest on dość prosty.
Zrób funkcje która przyjmuje 3 parametry
Potem sprawdzasz czy jest $value jest liczbą, następnie rozbijasz $value na liczby naturalne i to wszystko co jest po kropce, potem rozbijasz to co po kropce na cyfry. Potem sprawdzasz czy istnieje element tablicy o indeksie $decimal, jeśli tak to sprawdzasz jaką ma wartość. Jeśli powyżej lub równe 5 to podnosisz element tablicy o indeksie $decimal-- o jeden, jeśli nie zostawiasz tak jak jest, tworzysz z tego z powrotem stringa i wyświetlasz. Dodatkowo bardzo łatwo możesz zaadoptować tam zaokrąglanie w górę i w dół. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli chcesz nieco mocniej zgłębić się w temat czeka Cię nieco lektury:
1. Pozycja niejako obowiązkowa: http://floating-point-gui.de/ 2. Po przeczytaniu powyższego dowiesz się, że zwykłe liczby zmiennoprzecinkowe operują jedynie na mocno niedokładnych przybliżeniach i ich wartości praktycznie nigdy nie są prawidłowe (matematycznie). 3. Istnieje wiele różnych sposobów zaokrąglania liczb. Przykładowo czy 2,5 po zaokrągleniu to 2 czy 3? - wcale nie ma tutaj jednoznacznej odpowiedzi. 4. Liczby zmiennoprzecinkowe są niemal zawsze formatowane przed wyświetleniem - ponownie może to być problem zaokrąglenia. 5. Jeżeli chcesz dokładnych wyliczeń musisz korzystać z typu DECIMAL w MySQL albo GMP w PHP-ie. Ten post edytował Crozin 18.03.2015, 10:54:51 |
|
|
![]()
Post
#11
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Zauważyłem, że to wina PHP. Każdą z wartości przemnożyłem przez 1,33 i dla 2 miejsc po przecinku otrzymałem:
-------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Zauważyłem, że to wina PHP. 1. To nie "wina" PHP.2. To nie jest błędne działanie. |
|
|
![]()
Post
#13
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
1. To nie "wina" PHP. 2. To nie jest błędne działanie. Uzasadnij ![]() Co ciekawsze, dla:
daje:
Dopiero taki kod daje takie same wyniki: -------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jest wiele czynników:
1. PHP i MySQL mogą przy obliczeniach korzystać z różnej precyzji wykonywanych operacji. 2. Przy wyświetlaniu wyników w obu platformach mogą zostać wykorzystane różne sposoby zaokrąglania wyników. |
|
|
![]()
Post
#15
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
No właśnie. Nie wiem jak, bo nie jestem aż tak zaawansowany, żeby przenieść to tylko na MySQL'a, czyli z każdego wiersza:
zrobić takie tabelki:
i to w dodatku PDO, które dopiero co zacząłem smakować ![]()
-------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 02:58 |