Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258

    modificare un metodo per utilizzare i piu precisi bigdecimal

    ciao a tutti, in qualunque modo provi ottengo sempre una serie di errori : ( che devo fare per ottenere un risultato piu preciso con i BigDecimal?


    codice:
    import java.math.*;
    
    class conversione{
    
    public static void main(String [] args){
    
      double a = GradConvDec(1,0,36);
      System.out.println(a);
    
    }
    
    static double GradConvDec(int gradi, int primi, int secondi){
      double parti_decimali_di_primo = secondi/60;
      double parti_decimali_di_grado = (primi+parti_decimali_di_primo)/60;
      double risultato = gradi + parti_decimali_di_grado;
      return risultato;
    }
    
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    ce l'ho fatta...

    codice:
    import java.math.*;
    
    class conversione{
    
    public static void main(String [] args){
    
      BigDecimal a = GradConvDec(1,0,36);
      System.out.println(a);
    
    }
    
    static BigDecimal GradConvDec(int gradi, int primi, int secondi){
      BigDecimal parti_decimali_di_primo = (new BigDecimal(secondi)).divide(new BigDecimal(60));
      BigDecimal parti_decimali_di_grado = ((new BigDecimal(primi)).add(parti_decimali_di_primo)).divide(new BigDecimal(60));
      BigDecimal risultato = (new BigDecimal(gradi)).add(parti_decimali_di_grado);
      return risultato;
    }
    
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    Vorrei chiedere una cosa...il fatto che il primo programma mi dia come risultato 1.0 mentre il risultato della conversione piu precisamente(risultato ottenuto dal secondo programma) sia 1.01 è per il fatto che i conti con i double sono meno precisi e basta oppure c'è anche qualche impostazione nei double che mi arrotonda troppo il risultato? molte grazie.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Il problema è che la prima operazione

    codice:
    double parti_decimali_di_primo = secondi/60;
    è un'espressione intera, poichè la variabile "secondi" è intera e 60 è una costante intera, quindi il risultato della divisione è un'espressione intera (che, appunto, verrà sempre arrotondata all'intero).

    Esempio:

    codice:
    secondi = 50
    double parti_decimali_di_primo = secondi/60   ; Verrà assegnato 0
    In questo caso era sufficiente far sì che la costante "60" fosse double e l'intera espressione sarebbe stata valutata come double:

    codice:
    double parti_decimali_di_primo = secondi / 60.0;
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    1,258
    Ciao Lele, bravo, geniale!

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.