Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: somma di decimali

  1. #1
    Utente di HTML.it L'avatar di diablobox
    Registrato dal
    Feb 2001
    residenza
    Pisa
    Messaggi
    1,154

    somma di decimali

    ciao
    ho una pagina in .asp che mi fa diventare matto

    ho formattato due valori decimali con
    totale_fattura = FormatNumber((rsfatture.Fields.Item("totale").Valu e),2)
    PERIVA = FormatNumber((rsfatture.Fields.Item("PERIVA").Valu e),2)
    IVA = FormatNumber (((totale_fattura / 100) * PERIVA) ,2)

    se faccio la somma
    totale_fattura = (totale_fattura + IVA)

    mi da questi valori:
    64.3614.16
    cioè unisce le due stringhe e non fa la somma

    che c'è di sbagliato?

  2. #2
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592

    somma di decimali... ma quelli che usi sono stringhe...cioè caratteri di stampa

    Per i calcoli
    devi usare i campi numerici invece delle stringhe formattate dalla funzione ...formatNumber(...
    totale_fattura =rsfatture("totale")
    PERIVA = rsfatture("PERIVA")
    IVA = (totale_fattura / 100) * PERIVA
    totale_fattura = totale_fattura + IVA
    ' poi formatti i campi per la stampa usando campi stringa
    totale_fatturax =formatNumber(totale_fattura,2)
    IVAx=formatNumber(IVA,2)
    PERIVAx=formatNumber(PERIVA,2)
    ' e usi la stampa dei campi totale_fatturax, IVAx e PERIVAx tanto per intenderci
    ciao
    VM


    Quote Originariamente inviata da diablobox Visualizza il messaggio
    ciao
    ho una pagina in .asp che mi fa diventare matto

    ho formattato due valori decimali con
    totale_fattura = FormatNumber((rsfatture.Fields.Item("totale").Valu e),2)
    PERIVA = FormatNumber((rsfatture.Fields.Item("PERIVA").Valu e),2)
    IVA = FormatNumber (((totale_fattura / 100) * PERIVA) ,2)

    se faccio la somma
    totale_fattura = (totale_fattura + IVA)

    mi da questi valori:
    64.3614.16
    cioè unisce le due stringhe e non fa la somma



    che c'è di sbagliato?
    Vic53

  3. #3
    Utente di HTML.it L'avatar di diablobox
    Registrato dal
    Feb 2001
    residenza
    Pisa
    Messaggi
    1,154
    Non funziona ugualmente

    Anche se faccio una semplice operazione numerica tipo
    Session.LCID = 1033
    noIVA = (rsfatture.Fields.Item("noIVA").Value)
    totale_fattura = (rsfatture.Fields.Item("totale").Value)
    IMPONIBILE = totale_fattura
    PERIVA = (rsfatture.Fields.Item("PERIVA").Value)
    IVA = totale_fattura / 100

    mi da un errore:
    Microsoft VBScript runtime error '800a000d'
    Type mismatch
    che è la riga che fa la divisione
    IVA = totale_fattura / 100

    ho fatto anche altre prove
    se imposto
    ho inserito questa riga
    IF ISNUMERIC (totale_fattura) then response.write "CIAO"
    se imposto io il camp
    totale_fattura
    ad esempio su
    914.83
    che è il primo valore del recorset funziona
    se lo faccio impostare estraendolo dal database non mi riconosce la variabile come numerica

  4. #4
    Utente di HTML.it L'avatar di diablobox
    Registrato dal
    Feb 2001
    residenza
    Pisa
    Messaggi
    1,154
    ancora più strano

    se faccio cosi:
    FatturaDecimali = Right(totale_fattura, Len(totale_fattura ) - InStrRev(totale_fattura , "."))
    FatturaInteri = Left(totale_fattura, Len(totale_fattura ) - InStrRev(totale_fattura , "."))
    totale_fattura = FatturaInteri & "." & FatturaDecimali

    funziona

  5. #5
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592

    decimali col punto o con la virgola?

    Scusa ma il valore estratto dal database nel punto in cui fai la divisione è numerico?
    oppure è un testo in cui hai salvato un campo con la funzione
    formatNumber(campo,2) ....? dato che formatNumber restituisce la codifica di un numero nel formato testo, non ci puoi fare calcoli.... i calcoli li puoi fare su campi DB di tipo numerico

    in tal caso la codifica del database per il campo è sbagliata dato che i campi numerici
    nel db sono definiti con il punto e quindi le istruzioni che hai fatto anche se funzionano, non ti mettono a disposizione un campo numerico ma testo

    poi
    le parentesi su (rs....
    non servono

    totale_fattura = (rsfatture.Fields.Item("totale").Value)

    prima di fare il calcolo per il campo registrato nel db
    testa se è numerico con if isNumeric(....) then .....
    e manda un controllo a video usando una response.write per verificarlo

    ciao





    Quote Originariamente inviata da diablobox Visualizza il messaggio
    ancora più strano

    se faccio cosi:
    FatturaDecimali = Right(totale_fattura, Len(totale_fattura ) - InStrRev(totale_fattura , "."))
    FatturaInteri = Left(totale_fattura, Len(totale_fattura ) - InStrRev(totale_fattura , "."))
    totale_fattura = FatturaInteri & "." & FatturaDecimali

    funziona
    Vic53

  6. #6
    Utente di HTML.it L'avatar di diablobox
    Registrato dal
    Feb 2001
    residenza
    Pisa
    Messaggi
    1,154
    il campo è numerico
    decimal(8,2)

  7. #7
    Utente di HTML.it L'avatar di diablobox
    Registrato dal
    Feb 2001
    residenza
    Pisa
    Messaggi
    1,154
    La verifica l'ho fatta
    se faccio
    IF ISNUMERIC (totale_fattura) then response.write "CIAO"
    non mi fa il response.write

    se invece lo rielaboro cosi
    FatturaDecimali = Right(totale_fattura, Len(totale_fattura ) - InStrRev(totale_fattura , "."))
    FatturaInteri = Left(totale_fattura, Len(totale_fattura ) - InStrRev(totale_fattura , "."))
    totale_fattura = FatturaInteri & "." & FatturaDecimali
    mi fa il response.write

  8. #8
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592

    risposta

    non ti fa il response perchè il campo non è numerico come ti ho gia detto io!!!!!!
    non mi ascolti allora...

    guarda come hai definito il campo nel database poi ne riparliamo.
    ciao


    Quote Originariamente inviata da diablobox Visualizza il messaggio
    La verifica l'ho fatta
    se faccio
    IF ISNUMERIC (totale_fattura) then response.write "CIAO"
    non mi fa il response.write

    se invece lo rielaboro cosi
    FatturaDecimali = Right(totale_fattura, Len(totale_fattura ) - InStrRev(totale_fattura , "."))
    FatturaInteri = Left(totale_fattura, Len(totale_fattura ) - InStrRev(totale_fattura , "."))
    totale_fattura = FatturaInteri & "." & FatturaDecimali
    mi fa il response.write
    Vic53

  9. #9
    Utente di HTML.it L'avatar di diablobox
    Registrato dal
    Feb 2001
    residenza
    Pisa
    Messaggi
    1,154
    mi sa che hai ragione
    era definito come decimal invece che come float
    ora controllo se funziona tutto

  10. #10
    diablo, le somme numeriche si fanno con i numeri. Dato che ASP classico NON riconosce nativamente i tipi di colonna del db, devi fare tu una forzatura

    visto che stiamo parlando di soldi, credo siano sufficienti due decimali, quindi

    PrimoValore=CCURR(RsFatture("Colonna1"))
    SecondoValore=CCURR(RsFatture("Colonna2"))
    Somma=PrimoValore+SecondoValore

    facce sape'

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.