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

    [VB6] Somma di numeri decimali

    Perchè se eseguo questa operazione in Visual Basic:

    MsgBox (2396.95 - 2311.55)

    ottengo

    85.3999999999996

    e non

    85.4


    Grazie.
    Ciao.

  2. #2
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    basta definire i dati come single
    in questo modo otteraai sempre una solo cifra decimale dopo la virgola. nel caso tu ne voglia due con double
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  3. #3
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    La differenza fra un single e un double non sta nel numero di decimali, ma nella precisione (Single con virgola mobile a precisione semplice, Double con virgola mobile a precisione doppia).
    E' poi anche vero che un double contiene più decimali ma questo per lo spazio riservato in memoria (4 byte single, 8 byte double).
    Il numero di decimali lo decidi tu arrotondando con la Round:
    codice:
    MsgBox CStr(Round(2396.95 - 2311.55, 1))
    Inserendo i dati così
    MsgBox (2396.95 - 2311.55)
    siccome non sono stati definiti, è come se usassi dei variant che in caso di numeri hanno lo stesso intervallo di un double.
    ... e non usare while wend è una sintassi deprecata

  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514


    come non detto
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  5. #5
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Esiste anche la funzione Format per decidere il numero di decimali, oltre ad altre cose:
    CODE:

    Private Sub Command1_Click()
    MsgBox Format((2396.95 - 2311.555), "#,##0") 'Nessun decimale
    MsgBox Format((2396.95 - 2311.555), "#,##0.0") 'Un decimale
    MsgBox Format((2396.95 - 2311.555), "#,##0.00") 'due decimali
    MsgBox Format((2396.95 - 2311.555), "#,##0.000") 'Tre decimali
    End Sub
    LM

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.