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?
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.
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...
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.
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. :)
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
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.