Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245

    [VB6] Tipo di dati Double

    Ho la necessità di dover utilizzare valori numerici con una parte decimale. Questa però dev'essere il più possibile precisa e con questo intendo dire che dev'essere il meno possibile approssimata.
    Utilizzo quindi delle variabili di tipo Double che dovrebbero garantirmi la maggiore affidabilità.
    Se però la parte decimale è composta da molte cifre, neanche il tipo Double la considera interamente approssimando il dato.

    Come posso ad esempio lavorare con il numero 338.57000460732774 ?
    Questo infatti viene considerato come 338.570004607328 anche se è considerato un Double (8 byte).

    La cosa è sicuramente fattibile, visto che la semplice calcolatrice di Windows riesce tranquillamente a fare tutti i calcoli con una gran precisione.


    Grazie

  2. #2
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Ho provato a saperne di più cercando in internet.
    In questo sito viene richiamata la differenza fra il tipo Double e una variabile di tipo Float spiegando che il primo tipo considera 8 byte.
    In questo invece vengono elencati i tipi di dato, compresi il BFLOAT4 e il BFLOAT8 non più utilizzabili.
    Mentre nell'ultimo c'è la spiegazione della Microsoft.

    Non sono però riuscito a risolvere il mio problema...

  3. #3
    Utente di HTML.it L'avatar di Mabi
    Registrato dal
    May 2002
    Messaggi
    1,245
    Dopo una ricerca continua sono riuscito a trovarmi la soluzione.
    Dopo aver guardato spiegazioni su altri linguaggi (Pascal e Delphi) ma poche su visual basic, ho trovato l'ennesima tabella riassuntiva sui tipi di dati (Tabella) e ho notato che se volevo avere una maggiore precisione dovevo forzatamente aumentare il numero di byte riservati alla variabile.
    A questo punto ho riguardato l'MSDN sul tipo di dati e mi sono accorto che l'unico tipo di dato con un maggior numero di byte era il decimal (14 byte contro gli 8 del Double).
    Il decimal però in VB6 non è un tipo di dato "diretto", bisogna infatti passare dal variant. Quindi per rappresentare il mio numero originale ho fatto semplicemente così:
    codice:
    Dim Num
    
    Num = CDec("338,57000460732774")
    MsgBox CStr(Num)
    Spero di essermi stato d'aiuto...

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.