Newsgroup: it.comp.appl.access
Titolo: Controllare se un Decimal ha la virgola o no...

Ciao a tutti, dovrei controllare se un numero decimal è divisibile per
un'altro ma ho incontrato un problema...
In pratica fino ad ora ho convertito il numero in stringa e ho controllato
se aveva la virgola, ma per valori elevati il numero è seguito da
l'elevamento a potenza e quindi la virgola è presente, cè un modo per non
avere l'elevamento a potenza e fare questo controllo in modo agevole? 
Cercherò di spiegarmi meglio, ho che n=2,90125531317452E+17 essendo
presente la virgola...come faccio a vedere se quel numero è magari
290125531317452457,2  e non 290125531317452457 ???
grazie a tutti in anticipo per l'aiuto!!!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

grazie a tutti in anticipo per l'aiuto!!!
If Int(Numero)=Numero Then
  msgBox "Numero intero"
else
  msgbox "Numero decimale"
EndIf
Vincenzo Turturro
---------------------------------------------
il sito comune di it.comp.appl.access:
http://www.sitocomune.com/
---------------------------------------------
E quello di it.comp.as400
http://www.faq400.com/
---------------------------------------------

VT @ home ha scritto:




Era la prima soluzione per cui ho optato... purtroppo mi da overload anche
con il long!!!
Grazie comunque!!!



I numero di tipo Decimal occupano 12 bytes sul record e non hanno un tipo di 
dichiarativa particolare. Vengono trattati come Variant. Il tipo Long è 
sempre più piccolo del decimal, per questo ti va in overflow. Se lo dichiari 
Variant non dovrebbe succedere.
Ciao
Antonio

 Antonio
Si infatti ho dichiarato il numero come variant...l'overflow l'ho se
faccio il Clng(numero) è per questo che non riesco a vedere se il numero è
intero o no!!!


 --
Fai la sottrazione tra il Numero ed il suo FIX
If (Numero - Fix(numero))>0 then
   ' Ho la virgola
Else
   ' non ho la virgola
End if
@Alex

 @Alex
Ho gia tentato ma per numeri elevati il fix non funziona...
Grazie comunque!!!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 



Voglio insistere...
Perchč fai un Clng del numero ? Prova semplicemente ad utilizzare le 
istruzioni che ti aveva suggerito VT senza tentare nessuna conversione 
perchč il dato Decimal č piů grande di qualsiasi altro dato e ti fa 
necessariamente errore di conversione se tenti di trasformarlo in un altro 
tipo di numero.
Ciao
Antonio

 Antonio
Mi ero confuso con il CInt()...comunque ho utilizzato il Fix() che è
praticamente la stessa cosa di Int()...ma perdo la parte frazionaria per
numeri elevati!!!


 ha scritto nel messaggio 
news:etp12g$lrr$1...@news.newsland.it...

Per prova ho fatto così:
1) Ho creato una tabella con un campo di tipo Decimale che ha Precisione 28 
e Scala 2, il che significa che può avere fino a 26 cifre intere e 2 
decimali.
2) Ho inserito nella tabella alcuni records con numeri molto grandi (oltre 
20 cifre intere e su qualcuno anche un paio di cifre decimali).
3) Ho creato una maschera con Origine record la tabella predetta, con un 
controllo associato al campo della tabella ed un altro vuoto nel quale 
visualizzo il tipo di numero.
4) Ho generato un pulsante che mi mostra il tipo di numero presente nella 
tabella per mezzo di queste istruzioni:
Private Sub provanumero_click()
    If Int(Me.Numero) = Me.Numero Then
        Me.Tipodinumero = "INTERO"
    Else
        Me.Tipodinumero = "CON LA VIRGOLA"
    End If
End Sub
... e a me funziona. Perchè a te no ? Per favore, riprova anche tu senza 
aggiungere altro.
Ecco uno dei numeri che ho testato:
1,234567890123456789012345678E+25 che sarebbe:
12.345.678.901.234.567.890.123.456,78
Ciao
Antonio

 290125531317452457,2  e non 290125531317452457 ???
sto numero mi "sembra" 29012553131745200
-- 
ac
y-1=x


Considerate tutte le obiezioni che faceva m.rosignoli, mi (ci) piacerebbe 
sapere se alla fine ha risolto coi nostri suggerimenti o se ha dovuto usare 
qualche altro metodo !!!
Ciao
Antonio