PDA

View Full Version : [VB6] Numeri decimali


fulviettino
20-09-2005, 12:34
Sapreste consigliarmi un metodo che mi consenta di capire se un numero ha due cifre decimali?

71104
20-09-2005, 18:01
modulo 100 per vederne se ne ha di più, modulo 10 per vedere se ne ha più di una, > 0 per vedere se ne ha :)
prima però toglici il segno, altrimenti > 0 non funziona.

71104
20-09-2005, 18:04
ehm, aspetta un momento, con "cifre decimali" intendevi dire cifre in base dieci o cifre dopo la virgola? :D
vedere se ha cifre dopo la virgola è difficile... :stordita:
devi confrontarlo con il suo troncamento, ma a volte la comparazione tra numeri uguali con la virgola senza cifre decimali può risultare falsa... come metodo un po' impreciso potresti usare una piccola tolleranza...

okay
20-09-2005, 18:30
Sapreste consigliarmi un metodo che mi consenta di capire se un numero ha due cifre decimali?


Dim numero, bx, cifra
Dim sNum As String
numero = 12.33
sNum = Trim(Str(numero))
lung = Len(sNum)
bx = 0: For i = 1 To lung
If Mid(sNum, i, 1) = "." Then
bx = 1
Else
If bx = 1 Then cifra = cifra + 1
End If
Next i
if cifra=2 then msgbox("ciao da okay")

Tesinevb
29-12-2005, 21:22
Dim numero, bx, cifra
Dim sNum As String
numero = 12.33
sNum = Trim(Str(numero))
lung = Len(sNum)
bx = 0: For i = 1 To lung
If Mid(sNum, i, 1) = "." Then
bx = 1
Else
If bx = 1 Then cifra = cifra + 1
End If
Next i
if cifra=2 then msgbox("ciao da okay")


Ottimo mi funziona benissimo

ho iniziato a studiare e ho scelto il classico vb da un pò che smanetto.

Una domanda, ma per arrotondare per difetto o in eccesso c'è qualche funzione già pronta.

71104
29-12-2005, 21:56
Sapreste consigliarmi un metodo che mi consenta di capire se un numero ha due cifre decimali? mi è venuto in mente un metodo migliore, che poi è stupidissimo (la soluzione più semplice è spesso l'ultima che ti viene in mente); per sapere se ha almeno una cifra dopo la virgola (prendiamo ad esempio 10.5):
- prendi il suo arrotondamento per difetto (10)
- prendi quello per eccesso (11)
- moltiplica i due arrotondamenti e il numero stesso per 10 e convertili a interi (quindi ottieni 100, 105, 110)
- controlla se il numero è compreso strettamente tra i due arrotondamenti (in questo caso lo è :))
questo per vedere se ha almeno una cifra decimale; per vedere se ne ha almeno due fai lo stesso test moltiplicando per 100 anziché per 10; per vedere se ne ha esattamente 2 fai il test con 100 e quello con 1000: se il primo risulta vero e il secondo falso allora ne ha precisamente 2. :)

okay
29-12-2005, 22:24
Ottimo mi funziona benissimo

Una domanda, ma per arrotondare per difetto o in eccesso c'è qualche funzione già pronta.

Puoi usare l'istruzione INT

se per arrotondare per difetto usi INT

Numero=123.45
a=INT(numero)---> A conterrà 123

Numero=-123.45
a=INT(numero)---> A conterrà -124

Allo stesso modo per arrotondare per eccesso:

Numero=123.45
a=-INT(-numero)---> A conterrà 124

Numero=-123.45
a=-INT(-numero)---> A conterrà -123

ciao

Tesinevb
29-12-2005, 22:31
Puoi usare l'istruzione INT

se per arrotondare per difetto usi INT

Numero=123.45
a=INT(numero)---> A conterrà 123

Numero=-123.45
a=INT(numero)---> A conterrà -124

Allo stesso modo per arrotondare per eccesso:

Numero=123.45
a=-INT(-numero)---> A conterrà 124

Numero=-123.45
a=-INT(-numero)---> A conterrà -123

ciao




grazie okay magnifico

quel - prima di INT e del numero non ne parla msdn e la sua guida.

okay sei geniale

ciao