Newsgroup: it.comp.lang.visual-basic
Titolo: dubbi

Salve a tutto il newsgroup,
ho cominciato da poco a programmare in VB e ho alcuni dubbi che ancora non
ho chiarito, spero che qualche anima pia possa farlo:)
1) Sto studiando il VB6, vorrei sapere fino a quando sara' supportato, che
differenze ci sono con il nuovo Vb di .NET e se e' molto difficoltoso
passare dal vecchio al nuovo.
2) Non ho ben chiaro che differenza c'e' nell'usare Single e double o
Currency per rappresentare numeri in virgola mobile (mi sembra che convenga
usare single, che alloca solo 4 byte...per piu' precisione c'e' poi
double...non ho capito a che serve currency)
3)che utilita' c'e' nell'usare la funzione Randomize prima di Rnd ?
Grazie per l'attenzione prestatami e scusate per le domande very niubbi:)

 3)che utilita' c'e' nell'usare la funzione Randomize prima di Rnd ?
Dalla MSDN:
"Randomize
Inizializza il generatore di numeri casuali.
Se Randomize non viene utilizzata, quando la funzione Rnd (senza argomenti)
viene chiamata per la prima volta, utilizza come base lo stesso numero. Per
le chiamate successive la funzione utilizzerà l'ultimo numero generato."
Praticamente ti assicura la generazione di un numero casuale ogni volta
differente (si basa sull'orologio di sistema).
Spero di esserti stato d'aiuto...
Ciao,
- SonicBoom -

 Inizializza il generatore di numeri casuali.
Tip: Se usi Randomize <numero> otterra per <numero> uguale sempre la stessa
sequenza di numeri "causali".
Usando Randomize <numero_casule> la sequenza che otterrai sarà veramente(?)
casuale.
Come generare un <numer_casuale>? Semplice:
Randomize Now
Ricordi? I Date sono dei Double, e non è prevedibile sapere in quale istante
viene chiamata Randomize. Inoltre un dato istante non si ripeterà mai due
volte.
Ciao

 Mi ricorda qualcosa :)
Ecco chi era! :)
Non sapevo fosse un problema comune a piu' compilatori, ne prendo atto e mi
regolero' di conseguenza! :)
Io me ne sono accorto nella realizzazione del mio fantasmagorico programmone
per la tesi, e m'e' venuto il mal di mare! :) Avevo una serie di decimali in
piu' che teoricamente non avrebbero dovuto esserci, e prima di rendermi
conto che il "problema" (non chiamamolo errore, senno' VB mi si offende...)
era dovuto al compilatore ce ne ho messo... Tra l'altro in queste occasioni
non ti (ti do del tu, spero non ti offenda...) e' mai capitato di attribuire
l'errore al programmatore piuttosto che non al compilatore? Io ero sicuro
che VB non potesse sbagliare, per cui mi sono ricontrollato tutto il codice
(e t'assicuro che era parecchio!) un numero impressionante di volte, facendo
esempi numerici su carta (!!) per verificare che i risultati che m'aspettavo
teoricamente fossero compatibili con i dati sperimentali (da bravo
fisico...)! Alla fine ho capito il problema, e ti giuro che stavo per
mandare una bestemmia a Bill Gates (non l'ho mai fatto, nemmeno quando ho
scoperto che sul portatile era installato WinME...)! :)
Alla prossima!
- SonicBoom -

 cast (double)(single)1.3 produce lo stesso risultato.
Ehmm!! float? ;-)
Comunque, con che codice in particolare hai avuto questo problema,
perché a me restituisce il valore corretto.
Ciao.
--
BSD is for UNIX-lovers -- linux is for Windows-haters.

 perché a me restituisce il valore corretto.
Sě, ok :) (double)(float)1.3
Io in Borland C++ Builder ottengo l'identico risultato che in VB:
1.29999995231628
Ciao

 1.29999995231628
Sì, ma qual'è precisamente il codice che hai utilizzato per
visualizzare il risultato? In C od in C++? In un programma console
(con std::cout o printf?) o in un programma Windows? Lo hai salvato in
una variabile, ecc...?
Io con questo codice (C++):
<code>
#include <iostream>
int main()
{
    std::cout << static_cast<double>(ststic_cast<float>(1.3)) <<
std::endl; //C++ cast
    std::cout << (double)(float)1.3 << std::endl; //C cast
}
</code>
ottengo
1.3
1.3


 1.3
Dato le mie basse conoscienze di C/C++ non ho idea di come visualizzare il
tuo risultato, perņ mettendo un bel breakpoint e valutando
static_cast<double>(ststic_cast<float>(1.3))
e
(double)(float)1.3
ottengo sempre 1.29999995231628
lo stesso facendo
double d = static_cast<double>(static_cast<float>(1.3));
o
double d = (double)(float)1.3;
e valutando d.
Che sia un prob. del compilatore Borland?
Mi pare molto strano.
Ciao

 Mi pare molto strano.
Non penso neppure io.
Prova a compilarlo con il Borland ed eseguirlo.


 e double o Currency ....
Per i calcoli scientifici in dipendenza della precisione
 richiesta puoi usare Single o Double.
Per i calcoli da "ragionieri" usa Currency, che si
 comporta come fanno le calcolatrici da tavolo quando
 vengono impostate per un numero fisso di decimali.
 Currency usa sempre 4 decimali.
 Currency non va assolutamente bene per i calcoli scientifici
 (NON essendo in virgola mobile).
Ciao.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG