Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Errore sui numeri double aiuto per favore

    Salve ragazzi,

    ho un poroblema curioso da risolvere.

    Allora attraverso un popup di una pagina JSP inserisco un valore numerico in una text.

    il numero in questione è un nuomero di venti cifre di 1.

    Quindi 20 1 consecutivi (11111111111111111111111111111....)

    il problema è questo che da lato java

    attraverso la request mi recopero il valore

    String c = request.getParameter();

    allora il valoredi c è corretto.

    Quando poi vado a fare Double cc = new Double(c);

    fa un casino con gli ultimi numeri cioè mette tipo un numero esponenzxiale.

    Conme posso risolvere??

  2. #2
    Usa BigDecimal.

  3. #3
    allora ci avevo pensato anche io.

    Il discorso è che quando andiamo a salvare a db l'oggetto è mappato con double.

    alla fine dovrei avere sempre un double. Quindi l' unica soluzione possibile è l'utilizzo del bigecimal, in quanto il double è limitato ad un numero di cifre minore di 20?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Ma il numero che tratti ha la virgola? Perchè dall'esempio non sembra averla...

    Comunque in 64bit signed il numero più grande rappresentabile è +9.223.372.036.854.775.807 (19 cifre)

  5. #5
    allora il numero ha la virgola scusa forse non ho detto

    cmq può avere al massimo un valore da 0 a 9 dopo la virgola.

    Sto provando a vedere un pò in giro.

    E molti utenti che hanno questo problema lo risolvono con il numberformat ma io non ci riesco qualcuno ha qualche consiglio?

  6. #6
    Salve ragazzi qualcuno di voi mi può aiutare sono 2 giorni che sto sbattendo la testa su questo problema senza venirne a capo

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    non sei ancora chiaro, ragion per cui non ti si riesce ad aiutare.

    In Java la cosa è molto ben gestibile, e ti hanno anche già detto come gestirla (BigDecimal e BigInteger sono in grado di gestire numeri grandi quanto vuoi)...

    A database le cose si potrebbero complicare un po': se prendiamo ad esempio MySQL, BigInteger viene più o meno ben tradotto dal tipo BIGINT, per BigDecimal potrebbe non essere così semplice (anche se credo, ma non ricordo le specifiche, che NUMERIC e DECIMAL di MySQL vadano più che bene, il contrario vale di sicuro).

    Se invece il tuo formato è ben supportato (come numero) dal database, allora non avrai mai e poi mai problemi in java (BigInteger e BigDecimal hanno costruttori tali da poter parsare una String lunga quanto vuoi)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  8. #8
    Ok proveremo...

    l'unica cosa che ti vorrei chiedere ancora è.

    non è che utilizzando un bigdecimal perdiamo di precisione dopo la virgola? cosa che non dovrebbe accadere se utilizzo i double?

    Attendo notizie

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    La perdi con double in caso... con BigDecimal puoi rappresentare numeri grandi quanto... quanto ci stanno nel heap della JVM, anche milioni di cifre prima e dopo la virgola per intenderci.

    Leggi qui:
    BigDecimal
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    Allora, utilizzando il Bigdecimal il problema è stato risolto in parte.

    Lato java il numero si vede correttamente, gli passo una stringa.

    Di 19numeri + uno decimale

    facendomi stampare a consolle il valore, è corretto.

    lato jsp invece quando mi vado a richiamare quel valore con <cut value='${nomevariabile}'>

    il valore mi esce non corretto.

    Il valore che io ho inserito in un campo textfield è questo

    8787555555555555555.5 (lo passo lato java come stringa ad un bigdecimal)

    il valore è corretto.

    Lo vado a richiamare per mostrarlo lato frontent (jsp)

    il valore che mi viene fuori è questo:
    8.787.555.555.555.555.300,0

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.