Newsgroup: it.comp.lang.visual-basic
Titolo: arrotondamento anomalo

Vorrei sapere se esiste una funzione di arrotondamento in VB5 che
direttamente faccia ad es. quanto richiesto ora per l'Euro (alla terza cifra
il 5 fa incrementare la seconda cifra decimale).
Ho tentato utilizzando l'arrotondamento automatico che si ottiene passando
la cifra ad una variabile Currency o Long, ma per motivi a me
incomprensibili il 5 come terza cifra decimale incrementa la seconda SOLO se
la seconda č dispari(!?).
Grazie!
Giorgio

 Giorgio
Hai provato la funzione Round(espressione[, numcifredecimali])?
numcifredecimali -> Facoltativa. Numero che specifica il numero di cifre
decimali da includere nell'arrotondamento. Se omesso, la funzione Round
restituisce numeri interi.
Ciao!
Esteban
Hosted by 
www.seber.it


hai provato con qualcosa del tipo format(valore, "#.##") ?
--
--
AnTCeR
http://digilander.iol.it/antcer
http://www.emuitalia.com/winuae

 hai provato con qualcosa del tipo format(valore, "#.##") ?
io preferisco "0.00" per la visualizzazione dell'euro, così nel caso
l'ultima cifra, o tutte e due le decimali, sia/siano 0 mi viene visualizzato
qualcosa ugualmente.
Comunque Opterei per un bel round nel caso degli arrotondamenti.

> Comunque Opterei per un bel round nel caso degli arrotondamenti.
Si, ma io nel mio VB5 non trovo questo "Round" e neanche nell'help ce n'è
traccia!...forse sta solo nel VB6?
Giorgio

 ha scritto nel messaggio
news:YF3T7.10790$OP2.4...@news2.tin.it...

Se provi ad usarlo ti da errore?
Davide

traccia!...forse sta solo nel VB6?
Esatto.
Per il vb5 occorre scriversene una.
Trovi un esempio su 
http://www.vb-world.net/beginning/
-- 
hth, hal

> Se provi ad usarlo ti da errore?
Si.
Giorgio

 hth, hal
L'ho provato, ma purtroppo questo "arrotondatore" casalingo si comporta
anch'esso in modo strano: il 5(e il fenomeno č solo per il 5) come terza
cifra decimale incrementa la seconda SOLO se la seconda č PARI. Esempio:
12,345 diventa 12,35 ma 12,315 resta semplicemente troncato cioč 12,31.
Mah!
Fosse un bug?
Secondo me dovrei fare un Select Case sul Keyascii del tasto premuto, ma
come faccio a vedere se siamo o no alla terza cifra decimale?
Giorgio

Fosse un bug?
Prova a riscriverlo. Le funzioni di arrotondamento sono fra le prime cose
che si imparano ;-)
-- 
ciao, hal
che la sua prima function e' stata una Round su Access 2 e non sapeva
come fare per chiamarla dalla mascherina di access: quattro anni e mezzo 
di codice fa  :'')

Ciao
prova con questa funzione:
Public Function ARR(Numero, SeSuperiore, ArrotondaAlle) As Single
    If CDec(Numero) - (Int(CDec(Numero) / CDec(ArrotondaAlle)) *
CDec(ArrotondaAlle)) >= CDec(SeSuperiore) Then
        ARR = (Int(CDec(Numero) / CDec(ArrotondaAlle)) + 1) *
CDec(ArrotondaAlle)
    Else
        ARR = Int(CDec(Numero) / CDec(ArrotondaAlle)) * CDec(ArrotondaAlle)
    End If
End Function
anche questa e' <casalinga>, ma utilizzando un variant convertito in decimal
ovvia al problema dell'approssimazione dei single e dei double.
In Numero passi il valore da arrotondare, in SeSuperiore gli dici il peso su
cui arrotondare, in ArrotondaAlle a cosa arrotondare.
beppe
-----------------------------------------------------------
Visita il sito del WWF AltoFerrarese
http://www.comune.cento.fe.it/wwfaf
-----------------------------------------------------------

 traccia!...forse sta solo nel VB6?
Esattamente....solo in vb6.

 Esattamente....solo in vb6.
AH Beh!
Allora c'è un motivo per cui si chiama 6  e non 5!
:-)
Davide

 cui arrotondare, in ArrotondaAlle a cosa arrotondare.
Scusa, ma non sono riuscito a individuare cosa passargli.
Fammi un esempio, io voglio che alla terza decimale il 5 e superiori
incrementino la seconda decimale.
Es 12,3451 deve diventare 12,35 e 12,3251 diventi 12,33.
Cosa devo passargli come SeSuperiore e ArrotondaAlle?
Grazie
Giorgio

 Cosa devo passargli come SeSuperiore e ArrotondaAlle?
SeSuperiore = .005
ArrotondaAlle = .01
