Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Operacje matematyczne w php. Wyliczanie ceny netto
kukix
post
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----




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.
Go to the top of the page
+Quote Post
Uriziel01
post
Post #2





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
webdice
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




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...
Go to the top of the page
+Quote Post
Uriziel01
post
Post #4





Grupa: Zarejestrowani
Postów: 307
Pomógł: 37
Dołączył: 9.11.2010
Skąd: Zielona Góra

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Uriziel01 11.01.2012, 07:47:28
Go to the top of the page
+Quote Post
kukix
post
Post #5





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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 :/
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Mi twoj wzor:
  1. $cena_netto_1 = 0.55/(100+22) *100;
  2. echo $cena_netto_1;

Daje prawidłowe wyniki


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kukix
post
Post #7





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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. }
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 18:12