Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Operacje matematyczne w php. Wyliczanie ceny netto
Forum PHP.pl > Forum > Przedszkole
kukix


Witam.

Potrzebuje wyliczyć cene netto na podstawie ceny brutto i vatu.

Korzystam z następującego wzoru:


Cytat
7,38 : (100+23) = 7,38 : 123 = 0,06
0,06zł * 100 = 6 zł
Cena netto to 6 złotych.

Próbowałem tez np: cena_brutto/1,22

Kod wygląda tak:

  1. $operacja_1a = $cena_brutto_1/(100+$vat_1);
  2. $cena_netto_1 = $operacja_1a*100;


Problem w tym, że wszystkie wartości są źle obliczone. Jak próbuje obliczyć z tej otrzymanej ceny netto, cene brutto, wtedy wszystkie liczby są dziwnie zaokrąglone.

Cytat
1. cena brutto: 10,99 - Cena netto:8.13008130081 - VAT:23
2. cena brutto: 3,58 - Cena netto:2.43902439024 - VAT:23
3. cena brutto: 24,66 - Cena netto:19.512195122 - VAT:23
4. cena brutto: 0,55 - Cena netto:0 - VAT:8


Będe wdzięczny za wszelkie wypowiedzi.
Uriziel01
Mikro lekcja matematyki na poziomie bodajże szkoły podstawowej (reguła trzech):

Kod
100% x
122% 10,99

(100*10,99)/122 = 9,00819...
webdice
Cytat(Uriziel01 @ 11.01.2012, 07:34:29 ) *
Mikro lekcja matematyki na poziomie bodajże szkoły podstawowej (reguła trzech):

Kod
100% x
122% 10,99

(100*10,99)/122 = 9,00819...


Po co tak komplikować?

Kod
cena netto/1 + vat = cena brutto


Kod
123/1,23 = 100
10,99/1,23 = 9,00819...
Uriziel01
Komplikuje aby pytający widział co się stało, jak można zauważyć nie para się on na co dzień matematyką. A procentowe przedstawienie wydaje mi się bardziej oczywiste. Oczywiście Twoje rozwiązanie elegancko skróciło je do mniejszej formy.
kukix
Cytat(Uriziel01 @ 11.01.2012, 08:46:12 ) *
Komplikuje aby pytający widział co się stało, jak można zauważyć nie para się on na co dzień matematyką. A procentowe przedstawienie wydaje mi się bardziej oczywiste. Oczywiście Twoje rozwiązanie elegancko skróciło je do mniejszej formy.



a kolega wie, że dzielenie i mnożenie jest przemienne?

Moje działanie zapisane w jednej lini wygląda tak:
$cena_netto_1 = $cena_brutto_1/(100+$vat_1) *100;

(10,99/122)*100 = 9,0081

Pytanie moje było, dlaczego pomimo dobrego wg mnie działania, skrypt zwraca złe dane?
Bardzo dziwnie, obcina wszedzie końcówki, grosze.. czy do wykonania tej operacji nie powinienem użyć funkcji np number_format()

Zobaczcie, że dla ceny 0,55 cene netto obliczyło na 0 :/
nospor
Mi twoj wzor:
  1. $cena_netto_1 = 0.55/(100+22) *100;
  2. echo $cena_netto_1;

Daje prawidłowe wyniki
kukix
Cytat(nospor @ 11.01.2012, 12:40:50 ) *
Mi twoj wzor:
  1. $cena_netto_1 = 0.55/(100+22) *100;
  2. echo $cena_netto_1;

Daje prawidłowe wyniki


Dziekuje za podpowiedzi.. popatrzcie na te ceny brutto, które podałem powyżej.. są tam takie dziwne przecinki.. w trakcie operacji qwszystko co było po przecinku było obcinane.

Przed wykonaniem operacji, cene brutto musiałem przepuścić przez funkcje:

  1. function naKropke($liczba) {
  2. $liczba = str_replace(',', '.', $liczba);//przecinek na kropkle
  3. $liczba = preg_replace('#[^0-9\.]#', '', $liczba);//tyo cyferki i kropka
  4. return $liczba;
  5. }
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.