Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Scomposizione numero intero Javascript

    Come posso ricavare, con javascript, da un numero intero a 2 cifre le decine e le unità che lo compongono?

  2. #2
    devi usare split, funziona anceh con i numeri
    Un tardo hegeliano di Busalla / allevava un gorilla nella stalla
    citando Adorno nell notti chiare / finché il primate stanco di ascoltare
    lo strangolò con una sciarpa gialla Dillo Con Parole Sue

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    unità => numero % 10
    decine => Math.floor(numero / 10) % 10

    Questa è matematica, non JavaScript
    No

  4. #4
    Quote Originariamente inviata da tampertools Visualizza il messaggio
    unità => numero % 10
    decine => Math.floor(numero / 10) % 10

    Questa è matematica, non JavaScript
    ma questo è il forum sezione javascript, non siamo matematici, e un buon programmatore deve usare il codice + veloce e split è + veloce
    Un tardo hegeliano di Busalla / allevava un gorilla nella stalla
    citando Adorno nell notti chiare / finché il primate stanco di ascoltare
    lo strangolò con una sciarpa gialla Dillo Con Parole Sue

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Un buon programmatore deve usare il codice + veloce
    Sono d'accordo al 100%

    e split è + veloce
    Prima di sparare a caso per sostenere la tua tesi, fai SEMPRE qualche test.

    Ho scritto due funzioni, una con il tuo metodo e una con il mio. Entrambe ritornano un oggetto così:
    codice:
    // Ad esempio con il numero 1234
    {
      decine: 3,
      unita: 4
    }

    Con split:
    codice:
    function useSplit(n) {
    	var cifre = n.toString().split("");
    	return {
    		decine: +cifre[cifre.length - 2],
    		unita: +cifre[cifre.length - 1]
    	};
    }
    Con la matematica:
    codice:
    function useMath(n) {
    	return {
    		decine: Math.floor(n / 10) % 10,
    		unita: n % 10
    	};
    }

    Questo è il codice di test:
    codice:
    	[useSplit, useMath].forEach(function (f) {
    	 var i = 100000, d = new Date();
    	 while (i--) f(12345678);
    	 document.body.innerHTML += new Date() - d;
    	 document.body.innerHTML += "<br>";
     });
    Eseguendo il codice in Chrome per Android (probabilmente su un PC si otterrebbero tempi minori) ottengo:
    useSplit => 445 ms
    useMath => 36 ms


    Spero di essere stato abbastanza oggettivo

    Edit
    Ho riscritto la funzione useSplit così che, quando le viene passato un numero minore di 10, restituisca 0 come decine (prima restituiva null). useMath funzionava già.
    codice:
    function useSplit(n) {
    	var cifre = n.toString().split("");
    	return {
    		decine: +cifre[cifre.length - 2] || 0,
    		unita: +cifre[cifre.length - 1]
    	};
    }
    Ultima modifica di tampertools; 05-01-2015 a 12:34
    No

  6. #6
    ammetto di aver bluffato quando ho detto che è + veloce io conosco bene il php, da un po' di tempo do un'occhiata anche alla sezione javascript perché secondo me insegnando si impara
    Un tardo hegeliano di Busalla / allevava un gorilla nella stalla
    citando Adorno nell notti chiare / finché il primate stanco di ascoltare
    lo strangolò con una sciarpa gialla Dillo Con Parole Sue

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    perché secondo me insegnando si impara

    100% d'accordo
    Imparando su questo forum ho imparato tantissimo rispondendo alle domande

    Scusa se prima mi sono scaldato un po'


    Per TommyBerna:
    Se le funzioni devono funzionare anche con numeri negativi, dimmelo che devo aggiustarle entrambe
    No

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.