mnożenie przez liczbę ujemną

mnożenie przez liczbę ujemną
  • Rejestracja: dni
  • Ostatnio: dni
0

Mam taki dziwny problem. W tabeli mysql istnieje kolumna nazwijmy ją C, której typ określiłem jako INT (bo znajdują się w niej same liczby, choc nie zawsze całkowite) Przy pobieraniu danych na stronę wykonywane jest proste obliczenie:
pobierz daną z kolumny A np. liczba 6 następnie podziel przez daną z kolumny B np. liczba 2 i pomnóż przez daną z kolumny C np. liczba -4, czyli zwyczajnie

Kopiuj
    $xx=round (($yy/$zz)*$ww,3);

Wszystko liczy poprawnie dopóki, w kolumnie C nie pojawi się liczba ujemna! Wtedy traktuje ją jak zwykłą liczbę dodatnią. Zmieniłem już po kolej całe kodowanie kolumny z INT na Varchar, Float, Decimal etc. bez efektu. Jak to ugryźć?

4p
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

Najpierw potwierdź typy przypisywane każdej zmiennej (na poziomie PHPa). Możesz wykorzystać do tego funkcji var_dump(...); http://php.net/manual/pl/function.var-dump.php
lub trybu debug z IDE.

  • Rejestracja: dni
  • Ostatnio: dni
0

Nie bardzo rozumiem, co by mogło mi to dać poza wyświetleniem typu w jaki sposób opisana jest zmienna. Tę informację mam w tabeli, bo sam ten typ określiłem (aktualnie FLOAT). Chyba, że nie o to chodzi?

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

Może jakieś specyficzne dane? Generalnie działanie daje dobre wyniki: http://ideone.com/gtpoTB

axelbest
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 2255
0

A czy w bazie nie masz przypadkiem kolumny jako unsigned?

4p
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0
hudson napisał(a):

Nie bardzo rozumiem, co by mogło mi to dać poza wyświetleniem typu w jaki sposób opisana jest zmienna. Tę informację mam w tabeli, bo sam ten typ określiłem (aktualnie FLOAT). Chyba, że nie o to chodzi?

Wiele może się zdarzyć zanim dane (i typy danych) przewędrują do tej funkcji. W ten sposób zweryfikujesz że na wejściu są tam liczby które oczekujesz i że są one reprezentowane jako liczby przez PHP. Potem można działać dalej.

axelbest
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 2255
0

Btw nie wiem co miałeś na myśli pisząc

typ określiłem jako INT (bo znajdują się w niej same liczby, choc nie zawsze całkowite)

Int z tego co wiem przechowuje tylko/zawsze całkowite.

  • Rejestracja: dni
  • Ostatnio: dni
0
axelbest napisał(a):

Btw nie wiem co miałeś na myśli pisząc

typ określiłem jako INT (bo znajdują się w niej same liczby, choc nie zawsze całkowite)

Int z tego co wiem przechowuje tylko/zawsze całkowite.

Masz rację! Przecież liczby ujemne to tez liczby całkowite. A zatem niepotrzebnie kombinowałem z ustawianiem typu kodowania kolumny. Kompletnie bez sensu. Unsignet, też nie jest. Coś jest nie tak z samym zapisem dzielenia i mnożenia. Wszak dzieli poprawnie, tylko podzielony wynik pomnożony przez liczbę ujemną nie działa.
Wykluczyłem złe pobieranie z tabeli, bo na ostro podmieniłem zmienną na konkretną liczbę ujemną. Dalej to samo. To musi być jakiś prosty myk. Tyle, że nie mogę na niego trafić.

  • Rejestracja: dni
  • Ostatnio: dni
0

O rzesz w mo ..! Na wskazujący palec mojego starego nauczyciela od matmy! W tym prostym kodziku nie ma, żadnego błędu, a dane są pobierane prawidłowo! Wszystko gra. Problem był gdzie indziej. Nie zauważyłem. W moim ruskim kalkulatorze, miałem ustawioną funkcję dodawania 22%vat do każdej bieżącej operacji. Że tak powiem "rynce opadajum panie kolego". Temat do zamknięcia i sorki za młyn. :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.