PHP wyświetla złe liczby

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
daniel10a
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 200
Rejestracja: 12 sty 2008, 22:20
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

PHP wyświetla złe liczby

Post autor: daniel10a »

Mam taki kod:

Kod: Zaznacz cały

$wartosc = number_format($wartosc, 2);
			echo 'Cena netto: '.$wartosc.'PLN';
			echo "\n
";
			$vat = 0.22;
			$wartosc = $wartosc * (1 + $vat);
			$wartosc=number_format($wartosc, 2, '.', ' ');
			echo 'Cena brutto: ' .$wartosc. 'PLN';
W wyniku wyświetla mi coś takiego:

Kod: Zaznacz cały

Cena netto: 76,208.00PLN
Cena brutto: 92.72PLN
Dlaczego format wyświetlanej liczby jest taki, a nie taki jak w wartości netto?
Czasami wogóle wynik jest zły np 1.22 jest przy kilkukrotnym wpisywaniu różnych danych.
Problem ten pojawia sie przy większych liczbach
Awatar użytkownika
Adlatus
Zakręcona Traszka
Zakręcona Traszka
Posty: 857
Rejestracja: 29 sty 2007, 19:47
Płeć: Mężczyzna
Wersja Ubuntu: 18.04
Środowisko graficzne: GNOME
Architektura: x86_64
Lokalizacja: Puszczykowo

Odp: PHP wyświetla złe liczby

Post autor: Adlatus »

O ile pamiętam, separatorem w php jest kropka. Musisz wprowadzoną wartość zamienić na taka z separatorem '.', policzyć a potem zamienić separator na zgodny z polskim zapisem czyli ','.
Awatar użytkownika
ed3k
Piegowaty Guziec
Piegowaty Guziec
Posty: 21
Rejestracja: 08 sty 2008, 21:39
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: PHP wyświetla złe liczby

Post autor: ed3k »

spróbuj $wartosc = (double)$wartosc * (1 + $vat);
do{if(Gnome>KDE) break;}until(2+2==4);
deallas
Piegowaty Guziec
Piegowaty Guziec
Posty: 27
Rejestracja: 05 maja 2007, 20:18
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: PHP wyświetla złe liczby

Post autor: deallas »

To domyślny format zapisu danych (notacja angielska). Jak nie wiesz jak coś przestawić to zajrzyj do manuala php.

http://pl.php.net/number_format

Kod: Zaznacz cały

<?php

    $liczba = 1234.56;

    // notacja angielska (domyślna)
    $notacja_angielska = number_format($liczba);
    // 1,234.56

    // notacja polska
    $notacja_polska = number_format($liczba, 2, ',', ' ');
    // 1 234,56

    $number = 1234.5678;

    // notacja angielska bez separatora tysięcy
    $notacja_angielska = number_format($liczba, 2, '.', '');
    // 1234.57

?>
pozdro
panza
Piegowaty Guziec
Piegowaty Guziec
Posty: 17
Rejestracja: 13 gru 2008, 00:01
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

Odp: PHP wyświetla złe liczby

Post autor: panza »

A ja bym odstęp przed 'PLN' dał...
Python, C++, Delphi
deallas
Piegowaty Guziec
Piegowaty Guziec
Posty: 27
Rejestracja: 05 maja 2007, 20:18
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: PHP wyświetla złe liczby

Post autor: deallas »

@panza
A co to ma do rzeczy. Jemu chodzi o format wyprowadzonej liczby czyli z kropką, przecinkiem czy inną duperelą a nie dodaną spacje do ciągu...
Awatar użytkownika
daniel10a
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 200
Rejestracja: 12 sty 2008, 22:20
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: PHP wyświetla złe liczby

Post autor: daniel10a »

Problem z formatem liczby jest rozwiązany. Pozostaje jeszcze problem dlaczego mam zły wynik?
Przy różnych kwotach skrypt wyświetla błędne dane(wartość brutto), a do kwoty około 1000 poprawne dane.
panza
Piegowaty Guziec
Piegowaty Guziec
Posty: 17
Rejestracja: 13 gru 2008, 00:01
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME
Kontakt:

Odp: PHP wyświetla złe liczby

Post autor: panza »

@deallas

Twoje uwagi są równie bezużyteczne jak moje starania. Tak więc niczym sie ode mnie nie różnisz, tak samo zaśmiecasz forum.
Python, C++, Delphi
Awatar użytkownika
Adlatus
Zakręcona Traszka
Zakręcona Traszka
Posty: 857
Rejestracja: 29 sty 2007, 19:47
Płeć: Mężczyzna
Wersja Ubuntu: 18.04
Środowisko graficzne: GNOME
Architektura: x86_64
Lokalizacja: Puszczykowo

Odp: PHP wyświetla złe liczby

Post autor: Adlatus »

daniel10a pisze:Pozostaje jeszcze problem dlaczego mam zły wynik?
Przy różnych kwotach skrypt wyświetla błędne dane(wartość brutto), a do kwoty około 1000 poprawne dane.
Podaj przykłady.
Problemy z zaokrąglaniem?
dawidgarus
Wytworny Kaczor
Wytworny Kaczor
Posty: 418
Rejestracja: 09 lut 2007, 23:17
Płeć: Mężczyzna
Wersja Ubuntu: 9.10
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: PHP wyświetla złe liczby

Post autor: dawidgarus »

brak deklarowania typów zmiennych to błogosławieństwo i przekleństwo php.....
to dlatego, że dokonujesz obliczeń:

Kod: Zaznacz cały

$wartosc = $wartosc * (1 + $vat); 
nie na liczbie (integer), tylko ciągu znaków (string), który powstał w wyniku działania funkcji number_format już wcześniej. Zamieniając ciąg na liczbę, parser php traktuje ',' jako separator nie tysięcy, ale reszty...
tak powinien wyglądać podany przez Ciebie fragment kodu:

Kod: Zaznacz cały

echo 'Cena netto: '.number_format($wartosc, 2).'PLN';
echo "\n
";
$vat = 0.22;
$wartosc = $wartosc * (1 + $vat);
echo 'Cena brutto: ' .number_format($wartosc, 2). 'PLN';  
Awatar użytkownika
daniel10a
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 200
Rejestracja: 12 sty 2008, 22:20
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: PHP wyświetla złe liczby

Post autor: daniel10a »

Kod: Zaznacz cały

			$wartosc1 = number_format($wartosc, 2); 
			echo 'Cena netto: '.$wartosc1.'PLN'; 
			echo "\n
"; 
			$vat = 0.22; 
			$wartosc = $wartosc * (1 + $vat); 
			$wartosc=number_format($wartosc, 2, ',', ' '); 
			echo 'Cena brutto: ' .$wartosc. 'PLN';
Zmieniłem kod na taki jak powyżej i teraz działa poprawinie.
PHP nie obsługuje mnożenia z "," i obcinał liczbe: 76,208.00 do 76.

EDIT:
Dziękuje za pomoc.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Amazon [Bot] i 5 gości