Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [js] zaokrąglanie liczby
lucks
post 11.09.2006, 07:42:45
Post #1





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 5.04.2005

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


da sie zakrąglic liczbe do 2 miejsc po przecinku jakos funkcją z JS?
coś jak round w php...
Go to the top of the page
+Quote Post
dr_bonzo
post 11.09.2006, 07:47:11
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


http://www.javascriptkit.com/javatutors/round.shtml

chyba sie nie da tak prosto jak w php


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
lucks
post 11.09.2006, 08:05:15
Post #3





Grupa: Zarejestrowani
Postów: 143
Pomógł: 0
Dołączył: 5.04.2005

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


no ja własnie o tym, round w js nie działa tak uniwersalnie jak w php, ale moze jest jakas inna funkcja?
Go to the top of the page
+Quote Post
Hacker
post 11.09.2006, 08:13:40
Post #4





Grupa: Zarejestrowani
Postów: 225
Pomógł: 0
Dołączył: 1.11.2005

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


Kod
if (liczba > 0)
liczba = Math.floor(liczba*100)/100
else
liczba = Math.ceil(liczba*100)/100

I guitar.gif


--------------------
(\.../)This is Bunny
(O.o)Copy Bunny into your signature to help him...
(> <)...on his way to world domination
Go to the top of the page
+Quote Post
php programmer
post 11.09.2006, 08:16:34
Post #5





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


Możesz zrobić mały trick:

masz liczbe 13.123456
chcesz ją zaokrąglić do dwóch miejsc po przecinku
więc mnożysz ją przez 100 (bo 100 to 10 do potęgi drugiej - wykładnik to liczba zaokrąglenia)
więc 13.123456 * 100 = 1312.3456
i otrzymaną liczbę zaokrąglasz, wychodzi 1312
i teraz spowrotem dzilisz ją przez tą samą liczbę którą pomnozyłes (tuttaj 100)
wychodzi dokłądnie 13.12

Ten post edytował php programmer 11.09.2006, 08:17:18
Go to the top of the page
+Quote Post
revyag
post 11.09.2006, 08:20:05
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


@Hacker to co podałeś zaokrągla liczby do najbliższej liczby całkowitej więc o miejscach po przecinku możesz zapomnieć.

@php programmer - to co napisałeś jest w linku podanym przez dr bonzo


--------------------
-------------

------
Go to the top of the page
+Quote Post
Hacker
post 11.09.2006, 08:30:19
Post #7





Grupa: Zarejestrowani
Postów: 225
Pomógł: 0
Dołączył: 1.11.2005

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


@revyag
Darmowa lekcja matematyki dla Ciebie
Mamy liczbę 1379.9999
Przechodzi przez if-a
i Math.floor() zaokrągla do takiej samej bądź niższej liczby całkowitej
czyli 1379.9999*100 = 137999,99
czyli Math.floor robi z tego 137999
137999/100 = 1379,99
Czyli 2 miejsca po przecinku a teraz
Mamy liczbę -1379.9999
Nie przechodzi przez if-a
i Math.ceil() zaokrągla do takiej samej bądź wyższej liczby całkowitej
czyli -1379.9999*100 = -137999,99
czyli Math.ceil robi z tego -137999
-137999/100 = -1379,99

Ten post edytował Hacker 11.09.2006, 08:33:15


--------------------
(\.../)This is Bunny
(O.o)Copy Bunny into your signature to help him...
(> <)...on his way to world domination
Go to the top of the page
+Quote Post
revyag
post 11.09.2006, 08:38:16
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

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


@Hacker, szybko przeczytałem Twojego posta i nie zauważyłem że wynik zaokrąglenia dzielisz snitch.gif


--------------------
-------------

------
Go to the top of the page
+Quote Post
Hacker
post 11.09.2006, 08:49:25
Post #9





Grupa: Zarejestrowani
Postów: 225
Pomógł: 0
Dołączył: 1.11.2005

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


Ok, i sorry za drobny wrzut...
aarambo.gif smile.gif


--------------------
(\.../)This is Bunny
(O.o)Copy Bunny into your signature to help him...
(> <)...on his way to world domination
Go to the top of the page
+Quote Post
dr_bonzo
post 11.09.2006, 11:44:38
Post #10





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


@Hacker: spojrz na to:
  1. <?php
  2.  
  3. function round_Hackera( $liczba )
  4. {
  5.  if ( $liczba > 0 )
  6.  {
  7. return floor( $liczba * 100.) / 100.0;
  8.  }
  9.  else
  10.  {
  11. return ceil( $liczba * 100.) / 100.0;
  12.  }
  13. }
  14.  
  15. function wrapper_for_round_with_precision_2( $liczba )
  16. {
  17. return round( $liczba, 2 );
  18. }
  19.  
  20. $funkcyjki_do_przetestowania = array( 'round_Hackera', 'wrapper_for_round_with_precision_2' );
  21.  
  22.  
  23. $liczby = array( 13999.9999, -13999.9999 );
  24.  
  25. foreach ( $liczby as $liczba )
  26. {
  27. foreach ( $funkcyjki_do_przetestowania as $funkcyjka )
  28. {
  29. printf( "Input: %f; funkcja: %s Output: %f<br />", $liczba, $funkcyjka, $funkcyjka( $liczba ) );
  30. }
  31. }
  32.  
  33. ?>


wynik
Kod
Input: 13999.999900; funkcja: round_Hackera Output: 13999.990000
Input: 13999.999900; funkcja: wrapper_for_round_with_precision_2 Output: 14000.000000
Input: -13999.999900; funkcja: round_Hackera Output: -13999.990000
Input: -13999.999900; funkcja: wrapper_for_round_with_precision_2 Output: -14000.000000


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
php programmer
post 11.09.2006, 12:02:54
Post #11





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


dr_bonzo: w twoim kodzie

zamiast
  1. <?php
  2. printf( "Input: %f; funkcja: %s Output: %f<br />", $liczba, $funkcyjka, $funkcyjka( $liczba ) );
  3. ?>


dajesz
  1. <?php
  2. printf( "Input: %f; funkcja: %s Output: %01.2f<br />", $liczba, $funkcyjka, $funkcyjka( $liczba ) );
  3. ?>


i guitar.gif

Zresztą temat dotyczył JavaScript
Go to the top of the page
+Quote Post
dr_bonzo
post 11.09.2006, 12:21:10
Post #12





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Kolega chcial odpowiednik funkcji z php, pokazalem tylko ze funkcja Hackera nie dizala identycznie.
Poza tym twoje rozwiazanie daje taki sam wynik:

Input: 13999.999900; funkcja: wrapper_for_round_with_precision_2 Output: 14000.00


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
php programmer
post 11.09.2006, 12:24:29
Post #13





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 5
Dołączył: 8.11.2004
Skąd: trójmiasto

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


Myślałem, że chodzi o te zera na końcu
Go to the top of the page
+Quote Post
Hacker
post 11.09.2006, 17:43:38
Post #14





Grupa: Zarejestrowani
Postów: 225
Pomógł: 0
Dołączył: 1.11.2005

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


Sorry, myślałem, że chodzi o number_format
Mój błąd, ale jeżeli chodzi o round to
Math.round(liczba*100)/100


--------------------
(\.../)This is Bunny
(O.o)Copy Bunny into your signature to help him...
(> <)...on his way to world domination
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: 24.07.2025 - 17:05