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

Hardware Upgrade Forum Database Error
Database Error Database error
The Hardware Upgrade Forum database has encountered a problem.

Please try the following:
  • Load the page again by clicking the Refresh button in your web browser.
  • Open the www.hwupgrade.it home page, then try to open another page.
  • Click the Back button to try another link.
The www.hwupgrade.it forum technical staff have been notified of the error, though you may contact them if the problem persists.
 
We apologise for any inconvenience.