Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zamiana liczby -1 na 1
Forum PHP.pl > Forum > PHP
Lacki2006
Witam
Czy istnieje jakaś funkcja która zamieni liczę ujemną na dodatnią mam np -21.45 a potrzebuję aby była +21.45
nospor
Nazywa sie dokladnie tak samo jak w matematyce....

http://php.net/manual/en/function.abs.php
Lacki2006
tylko że to zaokrągla do pełnej cyfry a ja potrzebuję mieś do 2 miejsc po przecinku da się to jakoś zrobić tą funkcją ?

  1. $sSum = 323.43';// Suma do zapłaty
  2. $saldo = '-21.34';// Tą kwotę należy dodać do sumy do zapłaty
  3. echo 'Kwota: '.$saldo;
  4. echo '<br>';
  5. if ($saldo<0){
  6. $saldoujemne = abs($saldo);
  7. }
  8. $sSum = ($sSum + $saldoujemne);
  9. echo 'SALDO UJEMNE:'.$saldoujemne;
  10. echo '<br>';
  11. echo ' Do zapłaty: '. $sSum;
Mlodycompany
to najpierw pomnóż tą liczbe przez 100 a później podziel
nospor
Zgodnie z manualem oraz zgodnie z testem, ktory teraz zrobilem,
$saldo = '-21.34';
echo abs($saldo);

wszystko dziala jak nalezy.


ps: swoją drogą moglbys sie nauczyc rozrozniac liczbe -21.34 od tekstu '-21.34'
Lacki2006
A co masz na myśli z tym rozróżnianiem to może być rozwiązanie mojego problemu możesz mnie naprowadzić gdzie robię błąd w zapisie liczb oraz liter ?
redeemer
Cytat(Lacki2006 @ 12.06.2015, 13:20:51 ) *
Witam
Czy istnieje jakaś funkcja która zamieni liczę ujemną na dodatnią mam np -21.45 a potrzebuję aby była +21.45
Nawet nie znając takiej funkcji wystarczy pomożyć liczbę przez -1. facepalmxd.gif
Lacki2006
Tak robiłem ale coś jest nie tak czy jest możliwe aby zmienna miała jakiś inny format STRING czy jakoś tak
mam tak
  1. $saldo = '-6.98';
  2. if ($saldo<0){
  3. $saldoujemne = $saldo*(-1);
  4. }

wynik jest ok z 2 miejscami po przecinku

i działa ok ale jak zmienię pierwszą linijkę aby pobierało ze zmiennej która ma wartość -6.98 to wyświetla żle zaokrągla do pełnej cyfry.

a tak
  1. $saldo = $pobrana_kwota; // tu jest wartość -6.98 pobrana z serwisu
  2. if ($saldo<0){
  3. $saldoujemne = $saldo*(-1);
  4. }

wynik jest błędny bo wychodzi 6

O co tu może chodzić ?
prz3kus
Jestes pewien, że ta wartość pobrana ma kropke, a nie np przecinek?
tomxx
Sprawdź, używając var_dump($pobrana_kwota), co zawiera zmienna $pobrana_kwota i jakiego jest typu.
com
dostajesz przecinki zamiast . smile.gif
Pyton_000
My to wiemy ale trzeba autora uświadomić że z bazy tak się dostaje wink.gif
zawsze najpewniej jest robić str_replace(',','.', $cos) i problem się rozwiązuje praktycznie sam wink.gif
MiFlo
Poza tym że "21.34" jest stringiem to gdyby był float to jeżeli jest mniejsza niż 0 wystarczy pomnożyć przez -1 aby otrzymać dodatnią tudzież użyć abs()
redeemer
To czy zmienna jest floatem/double czy stringiem nie ma znaczenia.

  1. $a="-21.44";
  2. var_dump($a); // czy napewno string
  3.  
  4. $b=-21.44;
  5. var_dump($b); // czy napewno float/double
  6.  
  7. echo -1 * $a.PHP_EOL;
  8. echo abs($a).PHP_EOL;
  9.  
  10. echo -1 * $b.PHP_EOL;
  11. echo abs($b).PHP_EOL;
  12.  
com
w php do wersji 7 nie masz itak typowania smile.gif
com
nie ma jawnego, wiec jest niejawna konwersja na typ i czasem wychodzą bzdury.

dlatego
  1. $saldo = '-6.98';
  2. if ($saldo<0){
  3. $saldoujemne = $saldo*(-1);
  4. }
  5.  
  6. var_dump($saldoujemne); // float(6.98)
com
w php wszystko jest interpretowane, zacznijmy od tego wiec typ jest rozpoznawany na podstawie wartości i robione w sposób niejawny, stad też coś co dla php było na początku stringiem można było porównać z 0, i tak samo pomnożyć przez -1 i co otrzymaliśmy, ze stringa float.

@down
sam bym tego lepiej nie ujął biggrin.gif
Damonsson
No stary skoro ze stringa robisz float to, "w php jest jasny podział na typy." - to trochę kiepskie podsumowanie wink.gif
com
a na podstawie czego? jakieś dowody prosze smile.gif
Comandeer
Cytat("darek334")
Typ zmiennych nie jest rozpoznawany na podstawie wartości to złudzenie składni php któremu dałeś się złapać.

W takim razie na podstawie czego jest rozpoznawany?
  1. <?php
  2. $a = 1;
  3. var_dump(gettype($a)); //integer
  4.  
  5. $a = '1';
  6. var_dump(gettype($a)); //string

Jak dla mnie zmienia się w zależności od wartości zmiennej.
com
http://www.php.pl/Wortal/Artykuly/PHP/Pods...zutowanie-typow

to chyba podstawa tego języka takie rzeczy wiedzieć.

Cytat
Among other things, every zval stores some value and the type this value has. This is necessary because PHP is a dynamically typed language and as such variable types are only known at run-time and not at compile-time. Furthermore the type can change during the life of a zval, so if the zval previously stored an integer it may contain a string at a later point in time.


Każda zmienna w php reprezentowana jest jako struktura zval

Cytat
The type of a variable is not usually set by the programmer; rather, it is decided at runtime by PHP depending on the context in which that variable is used.


Nawet nie przeczytałeś tego co sam podlinkowałeś wink.gif
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.