Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zaokrąglanie inaczej...
netvalue
post
Post #1





Grupa: Zarejestrowani
Postów: 199
Pomógł: 2
Dołączył: 9.06.2008

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


Witam,

Mam problem z zaokraglaniem PHP, przykladowa sytuacja wyglada tak
  1. $x = 100;
  2. $y = 5.2030;
  3.  
  4. $result = $x / $y; // daje nam 19.2196
  5. $result = round ($result, 2); // daje nam 19.22


i teraz

  1. $result2 = $result * $y; // daje nam 99.8976
  2. $result2 = round($result2,2); // daje nam 99.99


Programowo wszystko zaokrągla dobrze... aczkolwiek ja potrzebuje aby wynik koncowy zmiennej $result2 dawal zawsze wartość $x
kombinuje juz dluzszy czas ale jakos nie moge nic drgnac... prosze o pomoc

Ten post edytował netvalue 20.08.2013, 11:55:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
StrefaPi
post
Post #2





Grupa: Zarejestrowani
Postów: 235
Pomógł: 50
Dołączył: 2.03.2013

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


http://pl1.php.net/manual/en/function.ceil.php ??


--------------------
https://studiostawki.com - studio fotograficzne i filmowe - ul. Inflancka 11, Warszawa
Go to the top of the page
+Quote Post
netvalue
post
Post #3





Grupa: Zarejestrowani
Postów: 199
Pomógł: 2
Dołączył: 9.06.2008

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


ale w przypadku gdy mamy np.

$x = 58;
$y = 4.1000;

ceil odpada.. bo jesli wystepuja rzeczywiscie jakies liczby po przecinku to musza zostac
Go to the top of the page
+Quote Post
StrefaPi
post
Post #4





Grupa: Zarejestrowani
Postów: 235
Pomógł: 50
Dołączył: 2.03.2013

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


to może nie zaokrąglaj $result ??

a tak dokładniej do czego to ma służyć?

Ten post edytował StrefaPi 20.08.2013, 11:46:49


--------------------
https://studiostawki.com - studio fotograficzne i filmowe - ul. Inflancka 11, Warszawa
Go to the top of the page
+Quote Post
netvalue
post
Post #5





Grupa: Zarejestrowani
Postów: 199
Pomógł: 2
Dołączył: 9.06.2008

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


to nic nie da bo
  1. $result = 19.2196
  2.  
  3. $result2 = $result * $y // daje 99.9995 ... a ja musze miec tyle co $x czyli 100
Go to the top of the page
+Quote Post
StrefaPi
post
Post #6





Grupa: Zarejestrowani
Postów: 235
Pomógł: 50
Dołączył: 2.03.2013

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


zwiększ dokładność obliczeń w php.ini, a u mnie Twój kod działa prawidłowo, czyli przynajmniej tak jak mówisz daje mi w wyniku 100 [chociaż nie wiem do czego to ma służyć, bo tak to łatwiej byłoby] ;)

a tak poza tym zaokrąglenie round(19.2196, 2) daje 19.22 a nie 19.20 ;)

wtedy 19,22 * 5,2030 = 100,00166

Ten post edytował StrefaPi 20.08.2013, 11:55:40


--------------------
https://studiostawki.com - studio fotograficzne i filmowe - ul. Inflancka 11, Warszawa
Go to the top of the page
+Quote Post
netvalue
post
Post #7





Grupa: Zarejestrowani
Postów: 199
Pomógł: 2
Dołączył: 9.06.2008

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


tak u gory pomylka nastapila z mojej strony...
ale
np. wezmy przykad

$x = 100;
$y = 4.2030;

i tu jest lipa sad.gif
Go to the top of the page
+Quote Post
StrefaPi
post
Post #8





Grupa: Zarejestrowani
Postów: 235
Pomógł: 50
Dołączył: 2.03.2013

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


Kod
$x = 100;
$y = 4.2030;

$result = $x / $y;

$result2 = $result * $y;
$result2 = round($result2, 2);


a czy tak nie działa? bo mi liczy prawidłowo ;)

http://www.php.net/manual/en/ini.core.php#ini.precision

Ten post edytował StrefaPi 20.08.2013, 12:03:34


--------------------
https://studiostawki.com - studio fotograficzne i filmowe - ul. Inflancka 11, Warszawa
Go to the top of the page
+Quote Post
Crozin
post
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Liczby zmiennoprzecinkowe działają na przybliżeniach i w trakcie operacji na nich niemal zawsze tracimy precyzję i dokładność obliczeń.
1. Lektura obowiązkowa: http://www.cygnus-software.com/papers/comp...aringfloats.htm
2. Lektura nieobowiązkowa: http://docs.oracle.com/cd/E19957-01/806-35...g_goldberg.html
3. Rozwiązanie problemu: https://www.google.com/search?q=php+arbitra...me&ie=UTF-8 --> http://php.net/manual/en/book.bc.php
Go to the top of the page
+Quote Post
netvalue
post
Post #10





Grupa: Zarejestrowani
Postów: 199
Pomógł: 2
Dołączył: 9.06.2008

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


tak u mnie byla skopana konfiuracja dzieki !
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: 21.08.2025 - 12:19