Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Zaokrąglenie do 2 miejsca po przecinku
Forum PHP.pl > Forum > Przedszkole
kondziu9516
Witam mam problem z zaokrągleniem liczby do 2 miejsc po przecinku.
Sumowanie jest w JS.

  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  2. <title>Kalkulator</title>
  3. </head>
  4. <script src="kalkulator.js"></script>
  5. function Suma(){
  6.  
  7. var suma=0;
  8. $('input:checkbox[@name^=id]',document.forms[0]).each(function(){
  9. if(this.checked)suma+=+$(this).attr('value');
  10. });
  11. $('#xyz').empty().append(suma);
  12. }
  13. <input type="checkbox" name="id1" value="12.89" />Produkt 1<br>
  14. <font size="2">Cena: 12.89 PLN:</font><br><br>
  15. <input type="checkbox" name="id2" value="15.90" />Produkt 2<br>
  16. <font size="2">Cena: 15.90 PLN:</font><br><br>
  17. <input type="checkbox" name="id3" value="120.78" />Produkt 3<br>
  18. <font size="2">Cena: 120.78 PLN:</font><br><br>
  19. <input type="checkbox" name="id3" value="20.78" />Produkt 4<br>
  20. <font size="2">Cena: 20.78 PLN:</font><br><br>
  21. <input type="button" onclick="Suma()" value="Podlicz" />
  22. </form>
  23. <b>SUMA:</b> <span id="xyz">0</span> PLN
  24. </body>
  25. </html>


Sumując Produkt 1 i Produkt 3
Wyskakuje suma: 133.67000000000002

Jak zaokrąglić to do dwóch miejsc?
Proszę o pomoc
Barcelona
Trzymej smile.gif http://www.yarpo.pl/2011/03/06/js-zaokragl...a-dokladnoscia/
kondziu9516
Widziałem to już...
Ale nie wiem jak to odwołać się do tego?

Gdzie wkleić dany fragment?
by_ikar
A tam kombinacje alpejskie jakieś.. toFixed i wszystko jasne wink.gif
kondziu9516
wiem dzięki wielkie....
znalazłem to wcześniej.
Ale gdzie to tutaj dokładnie wstawić?
BO próbowałem wielokrotnie...

  1. function Suma(){
  2.  
  3. var suma=0;
  4. $('input:checkbox[@name^=id]',document.forms[0]).each(function(){
  5. if(this.checked)suma+=+$(this).attr('value');
  6. });
  7. $('#xyz').empty().append(suma);
  8. }
  9. function Round(n, k)
  10. {
  11. var factor = Math.pow(10, k);
  12. return Math.round(n*factor)/factor;
  13. }
Kostek.88
  1.  
  2. var liczba = 3,4563482
  3.  
  4. var liczbaZaokraglona = liczba.toFixed(2); // to jest do dwóch
  5.  


EDIT: w Twoim przykładzie to chyba musisz 8. linijkę zamienić na
  1. $('#xyz').text(suma.toFixed(2));


albo

  1. $('#xyz').html(suma.toFixed(2));


Niepotrzebny Ci empty i append smile.gif Funkcja Round też nie, z tego co widzę.
kondziu9516
niestety nie działa...;(

A czy przerobiłby mi ktoś ten kod na poprawny??

  1. function Suma(){
  2.  
  3. var suma=0;
  4. $('input:checkbox[@name^=id]',document.forms[0]).each(function(){
  5. if(this.checked)suma+=+$(this).attr('value');
  6. });
  7. $('#xyz').empty().append(suma);
  8. }
  9.  


Edit:
Oczywiście daje plusy !
Kostek.88
Jak już robisz to w jQuery, to po co mieszać z natywnym JS? Zobacz tutaj: http://jsfiddle.net/kostek/hRDpR/ . Musisz sparsować każdą wartość funckją parseFloat (dla liczb ułamkowych) lub np. parseInt (dla całkowitych), a potem dopiero wykonywać na nich operacje. A dlaczego? Bo JS interpretuje Twoje wartości jako string i łączy je jak zwykłe fragmenty tekstu.
kondziu9516
albo coś źle wstawiam... albo nie działa...;(

Kostek.88
Ha ha ha! Działa smile.gif Sam widzisz pod linkiem. A tak zapytam... a gdzie masz jQuery?questionmark.gif http://docs.jquery.com/Downloading_jQuery - ściągnij i daj do HEAD
kondziu9516
No mam wszystko...
Tak to mam... i nie działa nawet teraz podliczanie...;/

  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  2. <title>Kalkulator</title>
  3. <script type='text/javascript' src='kalkulator1.js'></script>
  4. <script type='text/javascript' src="kalkulator.js"></script>
  5. <script type='text/javascript'>
  6. $('input.suma').click(function(){
  7. var suma = 0;
  8. $('form input[type=checkbox]:checked').each(function(){
  9. suma += parseFloat($(this).val());
  10. });
  11. $('#xyz').html(parseFloat(suma).toFixed(2));
  12.  
  13. });
  14. </head>
  15. <form>
  16. <input type="checkbox" name="id1" value="12.89" />Produkt 1<br>
  17. <font size="2">Cena: 12.89 PLN:</font><br><br>
  18. <input type="checkbox" name="id2" value="15.90" />Produkt 2<br>
  19. <font size="2">Cena: 15.90 PLN:</font><br><br>
  20. <input type="checkbox" name="id3" value="120.78" />Produkt 3<br>
  21. <font size="2">Cena: 120.78 PLN:</font><br><br>
  22. <input type="checkbox" name="id4" value="20.78" />Produkt 4<br>
  23. <font size="2">Cena: 20.78 PLN:</font><br><br>
  24. <input type="button" class="suma" value="Podlicz" />
  25. </form>
  26. <b>SUMA:</b> <span id="xyz">0.00</span> PLN
  27.  
  28. </body>
  29. </html>
Kostek.88
EDIT: a gdzie masz jQuery w tym przykładzie?! Podałem Ci link do biblioteki do wstawienia... przeczytałeś tego posta chociaż? Widzę, kalkulator wstawiasz, a jQuery nie... nie rozumiem... chyba nie czytałeś...

Tutaj masz wersję natywnego JavaScript. Jeśli nie masz zamiaru używać jQuery, to zrób to natywnie... jeśli masz mało JS na stronie, nie ma sensu byś umieszczał ciężką bibliotekę jQuery...

  1. function sumuj() {
  2. var suma = 0;
  3. var c = document.getElementById('formularz').getElementsByTagName('input');
  4. for (var i = 0; i < c.length; i++) {
  5. if (c[i].type == 'checkbox') {
  6. if ( c[i].checked == true ) {
  7. suma += parseFloat( c[i].value );
  8. }
  9. }
  10. }
  11.  
  12. document.getElementById("xyz").innerHTML = parseFloat(suma).toFixed(2);
  13. }
kondziu9516
Okej już działa...wink.gif
Zrobiłem to jeszcze inaczej...biggrin.gif
Ze źródła strony skopiowałem...
I brakowało tylko tego $(window).load(function(){
w tym...tongue.gif
  1. <script type='text/javascript'>
  2. //<![CDATA[
  3. $(window).load(function(){
  4. $('input.suma').click(function(){
  5. var suma = 0;
  6. $('form input[type=checkbox]:checked').each(function(){
  7. suma += parseFloat($(this).val());
  8. });
  9. $('#xyz').html(parseFloat(suma).toFixed(2));
  10. });
  11.  
  12. });//]]>
  13.  

-Mario-
A to jest forum php czy JS
Kostek.88
@kondziu9516: Możesz dać ew.

  1. $(document).ready(function(){
  2. // kod jQuery
  3. });


Poza tym nadal nie widzę tego jQuery w HEAD tongue.gif Mimo wszystko dobrze, że działa.

@Mario: Jak poprzeglądasz działy forum to zorientujesz się, że to nie tylko PHP. W dużej mierze tak, ale nie ukrywajmy, pewne elementy są ze sobą na tyle powiązane, że uważam za dobry pomysł działy nie o PHP. Ba, masz nawet HydePark.

PS. No chyba, że Ci o dział chodziło...
kosiew
Witam. Czy ktoś przerobił by ten kodzik tak aby w polu "wynik" pojawiła się liczba zaokrąglona do 2 miejsc po przecinku?? Wiem ze trzeba wykorzystać tą funkcje


  1. function zaokraglenie(liczba) {
  2. liczba = liczba * 100;
  3. var wynik = Math.round(liczba)/100;
  4. window.alert(wynik);
  5. }


ale nie mam pojęcia jak ja scalić z kodem i wywołać.

  1. function a() {
  2. p = 7;
  3. //pobiera wartość z input-a o id="p1"
  4. p1 = document.getElementById("p1").value;
  5. //oblicza wynik
  6. wynik = p1 / p;
  7. //zapisuje wynik w input o id="wynik"
  8. document.getElementById("wynik").value = wynik;
  9. }
  10. </script>
  11.  
  12. <from>
  13. <input type="text" name="pole" id="p1"/>
  14.  
  15. <input type="text" name="7" value="7"/>
  16.  
  17. <input type="text" id="wynik"/>
  18.  
  19. <input type="button" value="Oblicz" onclick="a()"/>
  20. </from>




Kostek.88
[JAVASCRIPT] pobierz, plaintext
  1. document.getElementById("wynik").value = parseFloat(wynik).toFixed(2);
[JAVASCRIPT] pobierz, plaintext


A jeśli chcesz bardzo użyć tej funkcji powyżej, to usuń ten cały alert. Powinno być return, jak w każdej normalnej funkcji.
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.