Newsgroup: it.comp.lang.visual-basic
Titolo: Divisione per 2 e risultato completamente sballato

Ho fatto una semplice divisione x 2(non è il massimo della sintassi detta
così usando il per) e invece di darmi la metà di un numero mi da un
risultato sballato xche senza zeri.
Ecco cosa avviene:
dim risultato
dim valore
valore = <0,0035
risultato = Replace((Replace(Mid(valore, 2), ",", ".") / 2), ",", ".")
il fatto che ci sia il simbolo di "<" non mi da fastidio xche con la mid lo
tolgo. ma non comprendo xche il risultato di questa bella operazione sia
17.5
la doppia replace è utile xche dalla divisione mi esce un numero con la
virgola (",") e a me serve il punto.
dove erro?
Grazie!!!

 valore = <0,0035
Non ci credo!
Tralasciando tutto il resto, torna a pagina 1 del libro. Essuvvia!

 Grazie!!!


solo un BEL consiglio, finchè sei in tempo: non usare MAI i variant
scrivi:
dim risultato as long
dim pippo as integer
dim nome as string
e non
dim risultato
dim pippo
eccetera...
ti salvi da belle rogne... e programmi decentemente

 risultato = Replace((Replace(Mid(valore, 2), ",", ".") / 2), ",", ".")
Puoi postare il codice?
Quello vero, intendo.
Ciao
Alberto


CARO/A mia un conta č la RAPPRESENTAZIONE del numero ed un conto il valore
ed il tipo del numero
io ho fatto l'esempio (vista la virgola) con i DOUBLE
a te adattare.....soldi? allora currency
strutture grafiche? forse bastano i single
etc etc
Option Explicit
Private Sub Command1_Click()
Dim valore As String
Dim depura As String
Dim valoreVero As Double
Dim Visualizza As String
valore = "<0,0035"
depura = Mid(valore, 2)
MsgBox depura
valoreVero = CDbl(depura)
Debug.Print valoreVero
' a questo punto
valoreVero = valoreVero / 2
Debug.Print valoreVero
'per una visualizzazione????
Visualizza = CStr(valoreVero)
MsgBox valoreVero
Visualizza = Replace(Visualizza, ",", ".")
MsgBox Visualizza
End Sub
tič studia!!!!
bye man/girl/it!
:-)
-- 
Il Wodkino Nazionale č a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 Quotefix e altro:
http://www.martek.it/go.asp?portamia=4
Usr: ICLVB Pw: amici

[*Albe V°* = vaccariTOGLI_QUESTO@TOGLI_QUESTOhotmail.com in
news:ibwLb.242823$
e6.95...@twister2.libero.it
] ha scritto:

Eggià! LOL

 MsgBox valoreVero
č un cast implicito sbagliato!
(sbagliato nel senso concettuale e formale.....non andrebbe mai fatto perchč
poi c'č gente come francy che si fida troppo di esso...come in questo
caso!!!!)
:-)

 Tralasciando tutto il resto, torna a pagina 1 del libro. Essuvvia!
Nooooooo che errore madornale x fortuna che è solo disattenzione...
volevo dire:
valore = "<0,0035"

 valore = "<0,0035"
Seeee...
Vedi se cosě ti torna:
risultato = Replace(Val(Replace(Mid(valore, 2), ",", ".")) / 2, ",", ".")


in realtà il ragazzo/a ha sbagliato di poco sai?????
il VB con i maledetti variant ti rende perfettamente valido....
Option Explicit
Private Sub Command1_Click()
Dim risultato
Dim valore
valore = "<0,0035"
valore = Replace(Mid(valore, 2), ",", ".")
risultato = Val(valore) / 2
MsgBox CStr(risultato)
End Sub
che schifo!!!!
e poi si che nascono gli errori o i comportamenti imprevisti!!!!
aloa
:-)
nello specifico
se tolgo il VAL viene 17,5
Posto che NON VA FATTO
cerchiamo di capire cosa fa il VB in questa situazione a dir poco
incresciosa!
che senso ha un / fra stringhe???...questa non me la ricordo!!
"pippo" / "pluto" ????
prova questa
Private Sub Command2_Click()
Dim p
Dim t
Dim s
p = "10.2"
t = "5"
s = p / t
MsgBox s
End Sub
pippo / pluto da errore...mah!correttamente
la divisione tra numeri la interpreta....alla "carlona"....
20,4
invece di 2,4
sembra che faccia la divisione e poi metta i numeri a caso riempiendo di
zero gli spazi vuoti
prova
p = "1012.2"
t = "2"
 eh eh
non me ne frega nulla eh......ma tanto per sapere che cosa farà mai
l'oggettino di zio bill....in questa situazione di nebbia totale.
salutos a todos
ciao Lupo!
-- 
Il Wodkino Nazionale è a : 
www.martek.it



 a tuo rischio e pericolo francy!!!!
la divisione la fa corretta ma per evitare di dichiarare 2
variabili.....pari le chiappe ad un sacco di bug futuri di difficile
individuazione!!!!
poi fai te!!!!
uomo/donna avvisato.......
ma sei francesco o francesca che non ricordo mai??????

 il VB con i maledetti variant ti rende perfettamente valido....
come dicevo, MAI usare i variant...

 ha scritto nel messaggio
news:btm4mi$939n0$1...@ID-174464.news.uni-berlin.de...


yup! leggibilissimo! ;-)

 yup! leggibilissimo! ;-)
Non lo è per niente, ma nelle prove avevo appoggiato tutto su un paio di
variabili.
Ovviamente Variant.
Ho preferito rispettare le volontà originali.

 come dicevo, MAI usare i variant...
Variant4ever!

 ciao Lupo!
Variant for ever!!! Ciao Marco.

 ha scritto nel messaggio
news:btm8se$8vpqi$1...@ID-174464.news.uni-berlin.de...

ero ironico... (lo "yup!" era messo lì all'uopo...) :-D
mi ricordo un esempio di codice in cui erano mescolati degli "1" (uno) con
delle l (elle) e delle i maiuscole, che in arial rendono tutto uguale...
figata... ecco un vero "code-obfuscator"

 ha scritto nel messaggio
news:btmc0s$921u9$1...@ID-77234.news.uni-berlin.de...

... tipo l11I = I1lIlI1 + lII11I1lIl1l - I1IllI
per leggero ci vuole un hex-editor!

 figata... ecco un vero "code-obfuscator"
risultato = °(°°(°(°°°(valore, 2), ",", ".")) / 2, ",", ".")
Function °(°°, °°°, °°°°) As String
° = Replace(°°, °°°, °°°°)
End Function
Function °°(°)
°° = Val(°)
End Function
Function °°°(°, °°, Optional °°°°)
°°° = Mid(°, °°, °°°°)
End Function
termoPilucco, °


dopo pochi replace...
Const IIllIIllII = 1
lllII11II11l = IIllIIllII + IIllIIllII
IIllIIllII =
Il1lIl1II1ll1l(IIll11I1l11lII(Il1lIl1II1ll1l(llIIlI1lI1Il(valore, IIllIIllII
+ IIllIIllII), ",", ".")) / IIllIIllII, ",", ".")
Function Il1lIl1II1ll1l(IIll11I1l11lII, llIIlI1lI1Il, IllIlIl1lI) As String
Il1lIl1II1ll1l = Replace(IIll11I1l11lII, llIIlI1lI1Il, IllIlIl1lI)
End Function
Function IIll11I1l11lII(Il1lIl1II1ll1l)
IIll11I1l11lII = Val(Il1lIl1II1ll1l)
End Function
Function llIIlI1lI1Il(Il1lIl1II1ll1l, IIll11I1l11lII, Optional IllIlIl1lI)
llIIlI1lI1Il = Mid(Il1lIl1II1ll1l, IIll11I1l11lII, IllIlIl1lI)
End Function

[*kitesurfZ* e *termoPilucco* sono dei matti]:
... e poi se la pigliano se io uso i Variant ...
Non c'č giustizia.

 End Function
Ti sei perso il mio primo post qui:
°=°^(¯-¯):¯=°:¦=¯:? °*¯*¦
Da lanciare in finestra immediata.
termoPilucco

 l'oggettino di zio bill....in questa situazione di nebbia totale.
Semplice: Non essendoci la Val (che pretende il punto come separatore interi
decimali) e capendo che deve fare un'operazione, intende tutto come numero.
Il punto non gli piace (se i settaggi prevedono la virgola come separatore
interi/decimali) e lo sega. Quindi fa 102/5 = 20,4 e 10122/2=5061
Semplice, no?!
Ora prova con la virgola, ovvero "10,2" e "1012,2", sempre senza Val.
Funziona mica male.
Vabbè, con la Val (ovviamente rimettendo il punto) torniamo all'istruzione
di prima.