Considerare la prima cifra di un intero

di il
6 risposte

Considerare la prima cifra di un intero

Salve,
Come faccio a considerare la cifra piu significativa di un intero??
mi spiego meglio, consideriamo il numero "2001" esso è salvato in un intero che è un'attributo di una classe; beh, io dovrei riuscire a copiare in un nuovo intero la cifra piu significativa (la cifra piu a sx per intenderci), che in questo caso è il numero '2'. Non ho la piu pallida idea di come posso fare.

6 Risposte

  • Re: Considerare la prima cifra di un intero

    Potresti anche trasformando l'intero sorgente il stringa e poi prendere il primo carattere e ritrasformarlo in un nuovo intero; ma operando solo su interi (mi sembra + elegante) potresti fare qualcosa del genere:
    
    int iSignificativo = myClasse.interoSource;
    while(iSignificativo > 9){
    iSignificativo /= 10;
    }
    
  • Re: Considerare la prima cifra di un intero

    Volendo, esiste anche questa:
    
       int primaCifra = (int)(d / Math.pow(10, (int)(Math.log10(d)))); 
    
    d è il numero di cui vuoi la prima cifra che può essere intero o double (e cosa che sembrerà strana, funziona anche con lo zero).
  • Re: Considerare la prima cifra di un intero

    barba59 ha scritto:


    Volendo, esiste anche questa:
    
       int primaCifra = (int)(d / Math.pow(10, (int)(Math.log10(d)))); 
    
    d è il numero di cui vuoi la prima cifra che può essere intero o double (e cosa che sembrerà strana, funziona anche con lo zero).
    Ingegnoso questo sistema, ci ho messo un po per capirlo e ho provato a fare i calcoli con la calcolatrice di windows( disastro assoluto ) che la mia calc manuale non e' piu tornato a casa dopo che l'ho prestato.
    E' giusto come interpretazione:
    ( int ) log10(d) mi darebbe il valore delle cifre significative,
    dividendi il numero d per 10 elevato al numero trovato prima ottengo un numero che ha la parte intera come cifra piu significativa, e per avere quel numero faccio di nuovo un cast a int.
    Si puo usare questo sitema con qualunque tipo di base??
    e se volessi magari piu di una cifra significativa basterebbe alzare il valore intero di log10(b)?
    esempio se volessi 2 cifre dovrei fare ( ( int ) log10(d) + 1 );
  • Re: Considerare la prima cifra di un intero

    Sì, bello quel sistema...
    esempio se volessi 2 cifre dovrei fare ( ( int ) log10(d) + 1 );
    direi che devi fare ( ( int ) log10(d) - 1 );

    ad esempio se tu hai un numero di 4 cifre devi dividerlo per 1000 (10^3)per avere la prima cifra significativa; per averne due devi dividerlo per 100 (10^2).
    Quindi quel due lo ottieni sottraendo 1 al risultato del logaritmo; se facessi +1 avresti sempre 10000 (10^4) e come risultato della divisione avresti 0.
  • Re: Considerare la prima cifra di un intero

    VI RINGRAZIO INFINITAMENTE.
    da solo non ci sarei mai arrivato
  • Re: Considerare la prima cifra di un intero

    Jam3s82 ha scritto:


    Sì, bello quel sistema...
    esempio se volessi 2 cifre dovrei fare ( ( int ) log10(d) + 1 );
    direi che devi fare ( ( int ) log10(d) - 1 );

    ad esempio se tu hai un numero di 4 cifre devi dividerlo per 1000 (10^3)per avere la prima cifra significativa; per averne due devi dividerlo per 100 (10^2).
    Quindi quel due lo ottieni sottraendo 1 al risultato del logaritmo; se facessi +1 avresti sempre 10000 (10^4) e come risultato della divisione avresti 0.
    e' vero hai ragione. Non sono molto pratico con i logaritmi.
Devi accedere o registrarti per scrivere nel forum
6 risposte