Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> number_format i zaokrąglanie cen
LordRaven
post 12.01.2012, 23:49:25
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 28.03.2009

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


Witam,
Wie ktoś może jak zrobić by ceny się nie zaokrąglały ? Bo na fakturze to nie za fajnie wygląda jak parę groszy jest mniej lub więcej.
Ma ktoś pomysł jak to najlepiej zrobić ?

Obecnie mam:
  1. number_format($cena, 2, ',', '.');


dzięki
Go to the top of the page
+Quote Post
ano
post 13.01.2012, 00:47:34
Post #2





Grupa: Zarejestrowani
Postów: 435
Pomógł: 40
Dołączył: 16.02.2003
Skąd: Wrocław

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


Eeee a jaśniej może? Jak mają się nie zaokrąglać skoro właśnie chcesz je "zaokrąglić" do dwóch miejsc po przecinku? To jak inaczej by to miało działać?
Chyba, że chodzi Ci o coś w tym stylu? wink.gif
  1. ((int) ($cena * 100)) / 100


--------------------
Linkedin | ...
Go to the top of the page
+Quote Post
LordRaven
post 13.01.2012, 01:36:46
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 28.03.2009

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


np. mnożę 6,78 x 2 i mi wychodzi 13.55



ja bym chciał mieć "ładne: ceny typ: 54,13 zł, 4 920,00 zł z dokładnością co do grosika bo na fakturze to jest ważne, a obecnie dodaje lub zjada mi grosiki :/
Chciałbym po prostu robić operacje na liczbach i by się wyświetlały normalne ceny, a nie zaokrąglone + - 1 gr.

próbowałem

  1. ((int) ($cena * 100)) / 100


i wyszło 6.77 x2 13.55 :/

Ten post edytował LordRaven 13.01.2012, 02:33:28
Go to the top of the page
+Quote Post
Uriziel01
post 13.01.2012, 05:27:22
Post #4





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

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


Możesz po prostu zwiększyć dokładność do większej ilości miejsc po przecinku ale to wpłynie na estetykę wyświetlanych wyników. Możesz także mierzyć błąd pomiarowy a następnie:
1)Równomiernie rozkładać go pomiędzy wartości
2)Dodać jako poprawkę do wartości ostatniej.

Ale tak swoją drogą NIE ISTNIEJE fizyczna możliwość aby 'co do grosika' podzielić dowolne liczby na dowolną ilość części, przykład, masz 10 PLN, podziel tę kwotę równo pomiędzy 3 osoby.

Ten post edytował Uriziel01 13.01.2012, 05:27:47
Go to the top of the page
+Quote Post
LordRaven
post 13.01.2012, 18:59:58
Post #5





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 28.03.2009

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


Wszystko się dzieje przez te % jak odliczam vat od ceny brutto :/
A jest jakaś inna funkcja którą mogę użyć, podobna do number_format ? Chodzi mi ładne ceny pokazywała ale bez zaokrąglania, tak jak na dole, oczywiście musiała by usuwać ileś miejsc po przecinku, by ceny były "normalne".

  1. $vat = 22;
  2. $price = 16.78;
  3. $amount = 2;
  4.  
  5. $price2 = $price * $amount;
  6. $price_without_vat = ($price2 * $vat)/100;
  7. $p = $price - $price_without_vat;
  8.  
  9. echo $p;
  10. echo '<br>';
  11. echo number_format($p, 2, ',', '.');


Zwraca:

9.3968
9,40
Go to the top of the page
+Quote Post
sanneo
post 13.01.2012, 19:10:26
Post #6





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 15.01.2008
Skąd: Warszawa

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


Użyj:

  1. sprintf('%01.2f', $twojaCena);


Ten post edytował sanneo 13.01.2012, 19:11:04


--------------------
Pomagajmy innym, kiedyś oni pomogą nam :)
Go to the top of the page
+Quote Post
LordRaven
post 13.01.2012, 19:51:54
Post #7





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 28.03.2009

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


nie pomogło, tak samo zaokrągliło mi liczbę jak number_format, a chciałbym żeby się nie zaokrąglała, ewentualnie ucinała końcówka, ale znów to zależy od kwoty ile liczb od końca mu uciąć. A teraz na fakturze w cenie razem brakuje mi 10 gr bo z każdego produktu się troszkę tego uzbierało :/
Go to the top of the page
+Quote Post
mls
post 13.01.2012, 20:11:54
Post #8





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


Bo kwoty zapisywać należy w groszach. Wtedy nic się nie zgubi, a przy wyświetlaniu trzeba tylko podzielić przez 100.


--------------------
Go to the top of the page
+Quote Post
LordRaven
post 13.01.2012, 22:16:36
Post #9





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 28.03.2009

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


o coś takiego ci chodziło ?
  1. $vat = 22;
  2. $cena_brutto = "1060";
  3. $ilosc = 2;
  4.  
  5. $cena_razem = $cena_brutto * $ilosc;
  6. $sam_vat = ($cena_razem * $vat)/100;
  7. $cena_netto = $cena_razem - $sam_vat;
  8.  
  9. echo sprintf('%01.2f', $cena_netto/100);
Go to the top of the page
+Quote Post
darko
post 13.01.2012, 23:48:12
Post #10





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


W tematach z fakturami i cyferkami zawsze używaj funkcji z rodziny bcmath operujących na liczbach o dużej precyzji:
  1. echo bcmul(2, 6.78, 2);


  1. // edit added:
  2. $vat = 22;
  3. $price = 16.78;
  4. $amount = 2;
  5.  
  6. $price2 = bcmul($price, $amount, 2);
  7. $price_without_vat = bcdiv(bcmul($price2, $vat, 2), 100, 2);
  8. $p = bcsub($price, $price_without_vat, 2);
  9.  
  10. echo $p;
  11. echo '<br>';
  12. echo number_format($p, 2, ',', '.');


Ten post edytował darko 13.01.2012, 23:54:57


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
mls
post 14.01.2012, 01:17:56
Post #11





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

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


Cytat(LordRaven @ 13.01.2012, 22:16:36 ) *
o coś takiego ci chodziło ?


tak mniej więcej... tylko vat liczy się od ceny netto, a liczby zapisuje jako liczby a nie string:

  1. $stawka_vat = 23;
  2. $cena_netto = 1060;
  3. $ilosc = 2;
  4.  
  5. $cena_brutto = $cena_netto * (1 + ($stawka_vat / 100));
  6. $wartosc_netto = $cena_netto * $ilosc;
  7. $wartosc_brutto = $cena_brutto * $ilosc;
  8. $wartosc_vat = $wartosc_brutto - $wartosc_netto;




--------------------
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 Wersja Lo-Fi Aktualny czas: 14.05.2025 - 09:50