Newsgroup: it.comp.lang.visual-basic
Titolo: [VB5] Anch'io Arrotondo !!!

Ciao ragazzi
come arrotondo un numero al primo intero superiore (quindi per eccesso) ?
Es 10:6 =1.6 arrotondare per avere 2
Es 100:19=5.2 arrotondare per avere 6
Anche 0.01 arrotondare per avere 1
Un'altra cosa,
ragazzi ho postato 2 giorni fa con titolo "Forse ci riesco". Dentro c'era
una piccola porzione di codice probabilmente da correggere per ottenere
alcune cosucce che ho chiesto. Andrea che mi aveva risposto, evidentemente
non ha avuto tempo di darmi i suggerimenti del caso. Se per favore qualcuno
riuscisse a darci un occhio mi farebbe un grandissimo favore. Sono quasi
alla fine del PRG (anche se me sa che ci sono nuovi sviluppi), ma cmq la
base di quanto fatto resta quella fatta, per cui mi sarebbero veramente
preziose correzioni o suggerimenti per concludere senza errori.
Come sempre vi ringrazio,
Ciao
Paolo
CIAUZ:)


Risultato = Round((100/19) + 1, 0)
100/19 = 5,2
5,2 + 1 = 6,2
Round con parametro 0 non restituisce nessun decimale quindi il risultato è
6
Spero di essere stato chiaro.
Ciao, Vincenzo

 Spero di essere stato chiaro.
100/20 = 5
5+1 = 6
:-/
quindi se 5,00~0 lo vuole arrotondare a 6 ok altrimenti ci serve un
controllo sul Mod della divisione es:
sub myRound(Dividendo,divisore)as double
    ret = dividendo \ divisore 'la barra capovolta restituisce l'intero
    if (Dividendo mod divisore) <> 0 then ret = ret+1
   myround = ret
end
logicamente vanno gestite le eccezioni di divisione
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 Anche 0.01 arrotondare per avere 1
mi sembra che fix faccia esattamente questo....
--
Salutoni
Sergio

*CSSoft* ha scritto:

Int, credo. Fix tronca di brutto.

 Int, credo. Fix tronca di brutto.
non costringermi a leggere la guida...
Troncare troncano tutti e due, solo che int tronca all'intero inferiore quindi:
dim a as single
dim b as integer
a = 2.3
b = int(a) ' b vale 2
a = -2.3
b = int (a) ' b vale -3
fix invece lo porta all'intero superiore:
dim a as single
dim b as integer
a = 2.3
b = fix(a) ' b vale 3
a = -2.3
b = fix(a) ' b vale -2
dato che paolo voleva l'intero per eccesso mi sembrava meglio usare il fix
NB: se qualcuno ha voglia di leggere la guida e smentisce quanto sopra, non mi
arrabbio.
--
Salutoni
Sergio

 b = fix(a) ' b vale 3    'No vale 2
Il Fix tronca di brutto, senza effettuare alcun arrotondamento

 Il Fix tronca di brutto, senza effettuare alcun arrotondamento
... anche con a = 2.9

 ... anche con a = 2.9
Accipicchia....
Hai vinto tu.
Ho letto la guida.
Quello che ho scritto sul fix è sbagliato (per la parte positiva)
--
Salutoni
Sergio

 Quello che ho scritto sul fix è sbagliato (per la parte positiva)
Perchè questa precisazione? Vale anche per i numeri negativi...

 Perchè questa precisazione? Vale anche per i numeri negativi...
perchè per la parte negativa avevo scritto:
a = -2.3
b = fix(a) ' b vale -2
e questo è corretto. E' l'unica differenza del fix rispetto all'int
--
Salutoni
Sergio

 e questo č corretto. E' l'unica differenza del fix rispetto all'int
Letto cosě, scusa, sembrerebbe una regola (piů o meno implicita), invece no.
La regola č:
Int arrotonda all'intero piů vicino (il piů vicino, non il superiore)
Fix "tronca di brutto", elimina, distrugge, vaporizza la parte decimale

 Int arrotonda all'intero più vicino (il più vicino, non il superiore)
no. tronca all'intero più piccolo
print int(2.9) ' output 2
print int(-2.1) 'output -3
Grazie di aver fatto anche tu un piccolo errore, aiuta a sentirsi meno soli :-)
--
Salutoni
Sergio

*CSSoft* ha scritto:

Sì, ho sbagliato (ma non mi piace dire "il più piccolo", nemmeno per
intendere "il minore"):
Dalla guida:
La differenza tra le funzioni Int e Fix risiede nel fatto che se numero è
negativo, Int restituisce il primo intero negativo minore o uguale a numero,
mentre Fix restituisce il primo intero negativo maggiore o uguale a numero.
Int ad esempio, converte -8,4 in -9, mentre Fix converte -8,4 in -8.
E quest'ultima (pur vera, forse...) mi sembra (in una guida) un esempio di
schizofrenia galoppante da parte di chi scrive. Da neurodeliri per chi
legge.
Bastava dire "Fix elimina i decimali". Fine.
 M$, prosit!

E mi lancio nella sintesi e, insieme, nella precisione:
Int arrotonda all'intero (algebrico) inferiore
Fix ricava la parte intera

 ha scritto nel messaggio
news:%ru9a.180721$YG2.5...@twister1.libero.it...
[cut]
io usavo uno stratagemma di questo genere:
Public Function Arrotonda(Numero As Single) As Integer
    Arrotonda = CInt(Numero + 0.5)
End Function
dato che cint arrotonda per difetto fino a 0.5, piu' in su arrotonda per
eccesso.
Es:
    n = 2
    a = cint(2,5) per difetto = 2
    n = 0,01
    a = cint(0,51) per eccesso = 1
    n = 3,99
    a = cint(4,49) per difetto = 4
ora non so se funzioni (alla luce di tutto il dibattito tra Lupo e CSSoft)
anche con i numeri negativi, o se ci siano delle eccezioni... fate voi :)
ciao, assa.

 Fix ricava la parte intera
Provate a disegnare i numeri sulla retta dei reali. Allora č chiaro che Int
prende il piů vicino intero "a sinistra", Fix il piů vicino "verso lo 0".
--
Ciao, Silv:o)

*Silvio Sergio* ha scritto:

Noooone, Fix tronca! Oh, porca pupattola, se non ci si crede, basta provare,
no?!

[Lupo] scrisse:
(snip)
il mio omonimo, che a differenza di me scrive pochissime cavolate, ha espresso
in formato grafico il tuo stesso concetto...
--
Salutoni
Sergio

 in formato grafico il tuo stesso concetto...
Non ho detto che quanto affermato sia falso, ma insisto (/evo) sul fatto che
le cose possono (debbono) essere scritte nel modo più semplice, fruibile e
comprensibile per tutti

 Noooone, Fix tronca! Oh, porca pupattola, se non ci si crede, basta
provare,
So benissimissimissimo la differenza fra fix e int.
OK. Fix tronca. Tronca. Non ci piove.
Un po' più complicato è esprimere con una sola parola altrettanto efficace
il comportamento di Int. Io direi "arrotonda all'intero inferiore". -3,
piaccia o no, è minore di -2.
Graficamente mi pare che la differenza sia più evidente di tante
disquisizioni.
Qual è la differenza nell'uso? boh! Se serve per approssimare molto spesso
non vanno bene nè l'una nell'altra.
Se vi chiedessi a bruciapelo, quante volte ci sta il 3 nel -8 che
rispondereste?
Se rispondete -3 volte col resto di uno siede intisti, se dite -2 volte col
resto di -2 fixisti ;)
--
Ciao, Silv:o)

 se dite -2 volte col resto di -2 fixisti
dimenticavo:
Se mi rispondete -2 volte col resto di 2 siete ... bocciati!
--
Silv;o)

 disquisizioni.
Vero, ma proprio a causa di quelle disquisizioni, comunque utili, mi son
permesso di definire in forma breve e corretta (oltre che chiara) sia Int
che Fix.