• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

zaokrąglanie do dwóch liczb po przecinku w JavaScript

0 głosów
5,459 wizyt
pytanie zadane 31 stycznia 2018 w JavaScript przez drzwi od kibla Nowicjusz (160 p.)

Nie działa mi zaokrąglanie do dwóch miejsc po przecinku. Normalnie wyświetla mi liczbę z wieloma cyframi po przecinku, a gdy użyję Math.random(x*100)/100 lub zamiast 100 dam większą liczbę, to i tak po przecinku pojawia się jedna cyfra. Napisałem również funkcję

function round(value, decimals){
			return Number(Math.round(value + "e"+decimals)+"e-"+decimals);
		}

i wynik jest taki sam, czyli jedna cyfra po przecinku. Dopiero użycie funkcji toFixed(2) działa prawidłowo. Jednakże chciałbym uzyskać to za pomocą Math.random, lecz nie wiem dlaczego nie działa.

 

Poniżej zamieszczam kod:

var wynik_div = document.getElementById('wynik');
			function oblicz(){
				var liczba = document.getElementById("liczba_ogłoszeń").value;
				var upust = document.getElementById("subskrypcja");
			
			
				if(liczba >= 1 && liczba <= 10){
					if(upust.checked){
						var cena = (liczba*1)-(liczba*0.20);
					}else{
						var cena = liczba*1;
					}
				}else if(liczba>=11 && liczba <= 50){
					if(upust.checked){
						var cena = (liczba*0.80) - (liczba*0.20);
					} else {
						var cena = liczba*0.80;
					}
				}else {
					if(upust.checked){
						var cena = (liczba*0.60)-(liczba*0.20);
					} else {
						var cena= liczba*0.60;
					}
				}
				
				wynik_div.innerHTML = Math.round(cena*100)/100;
			}
			

 

komentarz 31 stycznia 2018 przez drzwi od kibla Nowicjusz (160 p.)
Tutaj zamieszczam cały kod HTML:

 

http://pastebin.pl/view/e4bbf8d7

1 odpowiedź

0 głosów
odpowiedź 31 stycznia 2018 przez drzwi od kibla Nowicjusz (160 p.)

Dodałem do funkcji metodę toFixed i teraz dziala. Pytanie tylko, czy moja funkcja jest teraz poprawna? Nie używam samego toFixed(2), bo podobno w niektórych sytuacjach funkcja ta zwraca niepoprawny wynik, dlatego napisałem swoją funkcję i dodałem do zwracanego wyniku metodę toFixed.

function round(value, decimals){
			return Number(Math.round(value + "e"+decimals)+"e-"+decimals).toFixed(decimals);
		}

 

 

Podobne pytania

+1 głos
2 odpowiedzi 1,299 wizyt
pytanie zadane 14 października 2021 w JavaScript przez Admak Początkujący (340 p.)
0 głosów
1 odpowiedź 348 wizyt
pytanie zadane 11 stycznia 2020 w JavaScript przez Raivik Nowicjusz (150 p.)
0 głosów
7 odpowiedzi 2,797 wizyt

93,774 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,378 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...