Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak zaokrągli ciąg liczb do 3 miejsc po przecinku
Forum PHP.pl > Forum > Przedszkole
busyboy
Witam

Mam ciag licz np 16000 i chciałbym wstawić przecinek tak aby był ciąg zaokrąglony do 3 miejsc po przecinku czyli 16,000.

Proszę o wskazówki jak mam to zrobić ?

Dziekuje
busyboy
Dziekuje za pomoc - działa

Ale jest małe ale...

Gdy podam zmienną

  1. $number = 1000;
  2.  
  3. // english notation without thousands separator
  4. $english_format_number = number_format($number);


wyświetla mi - 1,000

Ale gdy podam zmienną

  1. $number = 250;
  2.  
  3. // english notation without thousands separator
  4. $english_format_number = number_format($number);


To wyąwietla mi - 250 zamiast 0,250 sad.gif
b4rt3kk
Bo to nie jest zaokrąglenie, tylko zapis anglosaski, oddziela przecinkiem tysiące, a liczba 250 jest mniejsza od tysiąca, więc nie ma co oddzielać.
Crozin
1. Nie number_format, a NumberFormatter - nie będziesz musiał każdorazowo powtarzać ustawień dla formattera, a zmiana ustawień lokalizacji aplikacji nie będzie jednym wielkim bólem dupy. wink.gif
2. Wracając do tematu: http://ideone.com/ndUYSS - coś musiałeś namieszać ponieważ nie ma prawa wyświetlić Ci się "0,250".

EDIT: Dopiero teraz zauważyłem, że pożądany wynik to "0,250", a nie że taki jest otrzymywany.

1. Zapis liczby 250 w notacji anglosaskiej jako 0,250 jest po prostu bez sensu stąd nie ma gotowych narzędzi do tego typu działań. Zresztą po co w ogóle Ci coś takiego?
2. Czy nie powinieneś przypadkiem przejść na części tysięczne liczby? Wtedy taki zapis ma już sens.

PS. 16000 to liczba. Tutaj co najwyżej można mówić o ciągu cyfr. wink.gif
busyboy
Może sprecyzuje to dokładniej, mam plik z towarami - dokładnie z PC Market - w następującej formie :

TOW;5900085004281;Baleron Prasowany z Indyka;987;1270;34000;8

TOW - wartość stała
5900085004281 - kod towaru (w tym przypadku EAN)
Baleron Prasowany z Indyka - nazwa towaru
987 - cena netto - w PC Market widnieje jako 9,87 - czyli przecinek jest wstawiony przed przedostatnią cyfrą
1270 - cena brutto - w PC Market widnieje jako 12,70 - czyli przecinek jest wstawiony przed przedostatnią cyfrą
34000 - ilość - w PC Market widnieje jako 34,000 - czyli przecinek jest wstawiony przed trzecią cyfrą od konca
8 - wartość określająca stawkę VAT w tym przypadku 8 %

Na początku chciałem jeszcze stworzyć skrypcik który by mi importował do bazy konkretny plik który wskaże – ale za bardzo nie wiedziałem jak to zrobił i będę importował przez phpmyadmin.
Problem polega na przekonwertowaniu tych licz aby zostały przedstawione w odpowiedni sposób – przykład powyżej – zapisane mogą być do bazy w takiej formie – tylko chodzi np. o to gdy są pobierane z bazy aby były odpowiednio przekonwertowane.
Mam nadzieje że teraz wyjaśniłem jaśniej…
Mackos
No to chyba logiczne że możesz sobie po prostu to podzielić, czyli:
$cenaNetto/100 (te 987/100 = 9,87)
$cenaBrutto/100 (te 1270/100 = 12,7)
$ilosc - tu chyba chodzi o zapis anglosaski jak wspomniał b4rt3kk ale jeśli nie to /1000
I masz normalnie ceny, jedyne co to dla ścisłości możesz dać number format.
busyboy
Hmm faktycznie rozwiązanie banalne ale na to nie wpadłem, a co z wprowadzaniem takiej wartosci? Np jak wprowadze wartosci 25 to zeby mi zapisam jako 25000 a np jak wprowadze wartość 24,5 to zapisze mi jako 24500 lub 22,550 to zeby zapisal mi jako 22550.

Schemat jest następujący ja wpisuje jakąś wartość po przecinku lub bez a on zapiuje mi do bazy w formie np

24 - > 24000
22,5 -> 22500
3,545 -> 3545

Mackos
Uderz się czymś ciężkim tongue.gif
Skoro chcesz wykonać działanie odwrotne, to odwrotnością dzielenia jest ... ?
busyboy
masakra,sorki ale jeszcze nie kontaktowalem... dla mnie juz jest wszystko jasne... przepraszam za tak banalny temat.

Pozdrawiam
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.