Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    28

    [vb6]aiuto.... più precisione di calcolo


    Ciao a tutti,
    ho scritto un programma in visual basic che tenta di calcolare i parametri di rototraslazione tra due sistemi di riferimento una volta che siano note le coordinate di tre punti nei due sistemi suddetti.
    Il programma da risultati sballati:
    -errori dovuti a radicali leggermente negativi
    -risultati differenti se ad esempio inserisco le coordinate in metri e poi le stesse coordinate in millimetri (moltiplicando l'input per 1000 non ottengo un output*1000 come invece deve essere).

    Ho ricontrollato più volte l'algoritmo di calcolo e sono sicuro che sia corretto.
    Ho anche cercato di ridurre il più possibile il numero di operazioni aritmetiche, ma rimane comunque molto elevato.

    E' possibile che le variabili di tipo double del visual basic, usate nel codice, non siano sufficientemente capienti da assorbire la diffusione degli errori dovuta all'elevato numero di operazioni?


    Se si, esiste la possibilità in vb di avere variabili più capienti?

    oppure esistono linguaggi di programmazione più "precisi"?

    Qualcuno potrebbe darmi qualche dritta al riguardo?

    Grazie....mille. Ciao!

  2. #2
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao sssimone,
    per quanto mi risulta i calcoli anche millesimali, marginali, con VB sono precisi. Però questa affermazione dipende da come vengono utilizzate le variabili o se prima dell'inserimento nella variabile siano effettuati o meno degli arrotondamenti e/o troncamenti dei decimali.
    Il tipo Double è utilizzata per valori con un ampio numero di decimali, pertanto è precisa nella maggior parte dei casi applicativi.
    Però se vuoi potresti utilizzare il nuovo tipo di dati "Decimal" che tratta numeri astronomici, con 28 posizioni decimali. Il predetto tipo ha però delle limitazioni (Confronta MSDN alla voce Tipo di dati Decimal) nell'utilizzo.
    Dalla lettura "(moltiplicando l'input per 1000 non ottengo un output*1000 come invece deve essere)" mi viene un dubbio, come dichiari le variabili? Dim dblPippo1 as Double, dblPippo2 as Double; o viceversa: Dim dblPippo1, dblPippo2 as Double. Perchè in quest'ultimo caso si verificherebbero gli errori che lamenti, dato che solo l'ultima variabile è Double mentre la prima è Variant.
    Spero di esserti stato utile.
    Ciao.
    LM

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    28

    VB6 Grazie LMondi

    Grazie LMondi i tuoi consigli mi sono stati di grande aiuto e spero di poter ricambiare rispondendo a tuoi quesiti nel forum,..se ne sarò capace.
    Ciao.
    sssimone

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.