problema della funzione val()

Jury,

che stringa ottieni con la seguente istruzione?

Str(Val(“123.25”))

Intanto comincia ad utilizzare il comando format quando riempi un textbox con numeri ;
txtprova.text = Format(numero,"#,###,###,###.00") su un sistema localizzato in italiano mostra esattamente la formattazione italiana, poi utilizza la variabile currency cos per lo meno durante i calcoli non hai scarti.
Poi ovviamente i linguaggi di programmazione come xojo sono compilati e non quindi interpretati con una dll che fa da runtime con tutti le problematiche che si porta appresso. cos come il limite di memoria di 640 kbyte che ancora oggi ci portiamo appresso con windows

Oppure torna a programmare con VB6

Eh… Luciano le tue soluzioni sono sempre cos funzionali … hiihihihihih

[quote=321021:@Maurizio Rossi]Jury,

che stringa ottieni con la seguente istruzione?

Str(Val(“123.25”))[/quote]

questo il risultato , di un paio di prove

	dim s as string
	dim d as double
	dim s1 as string
	dim d1 as Double
	
	
	s="23.34"
	d=val(s) 
	' d conterrà  23,3399999999999999
	
	s1="123.25"
	d1=val(s1)
	' d1 conterrà  123,25

tutto razionalissimo vero ??

se per voi e’ razionale che uno che usa un ide per semplificarsi la vita ,si debba anche occupare della rappresentazione dei numeri in virgola mobile in memoria , per me non e’ cosi !!!
altrimenti, se cosi fosse, perchè fermarsi alla questione della rappresentazione binaria dei numeri in virgola mobile ???
perchè non arriviamo a disquisire sul come il bus dati comunichi tra cpu e il resto delle periferiche ???

a me certe affermazioni fanno veramente sorridere se non piangere

devo commentare questa affermazione ? già porti addosso il peso di un cognome che ha rovinato l’italia , non cercare di sfidare ulteriormente il destino

Jury,
non facciamo scherzi.
Ti ho chiesto quale stringa ottieni con l’istruzione:

Str(Val(“123.25”))

[quote=321112:@Maurizio Rossi]Jury,
non facciamo scherzi.
Ti ho chiesto quale stringa ottieni con l’istruzione:

Str(Val(“123.25”))[/quote]

="123.25 "

Jury,
riesci ora a comprendere il senso di quello che, con calma e pazienza, Antonio ha cercato di spiegarti?

io posso capire che ci siano dei problemi che xojo deve affrontare e risolvere , non che questi debbano essere scaricati addosso di chi sviluppa , dandoli per scontati.
cmq , non vedo nessun motivo che giustifichi quanto da voi affermato e sostenuto fino ad ora , vedo che la funzione val() non fa il suo dovere e vedo che se incapsulata all’interno della funzione str() anche questa si comporta in modo insensato !

tu le vedi queste anomalie o nO ?

Jury,
guarda in rete e al di fuori di questo forum quanto e’ presente sul problema che hai posto.
La rappresentazione dei numeri in virgola opera in questo modo.
Insistere nel sostenere che sono presenti anomalie non serve a nulla.

si … ok , rassegnarsi e’ sempre la scelta migliore , invece di pretendere che un prodotto risolva i suoi problemi. Ottimo !

ed effettivamente rilevo che un altro caso di funzionamento anomalo di xojo we segnalato su feedback da tanto tempo e’ stato verificato ed ovviamente non risolto . il tutto estremamente confortante

Fattene una ragione: non e’ come tu pretendi che sia.

vero , e questo limitatamente a xojo.
https://msdn.microsoft.com/it-it/library/zh1hkw6k(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

Qualche anno fa un nuovo assunto, fresco di studi, ha esternato:

“Il sistema mi rema contro”.

Alla nostra richiesta di chiarire cosa volesse dire, ha risposto:

“Il programma io l’ho scritto bene: e’ il computer che lo esegue male”.

Nulla di nuovo…

Calmati Nocciolino, io non ti ho insultato !!! Non ti ho detto che sei solo “Buono” di rompere i c…i !!! e con questo chiudo.
Cioè non cacherò più, ogni tuo prossimo post.
Stammi bene.

se ne fai una questione filosofica ti dico che se xojo conosce in anticipo i limiti a cui e’ assoggettata l’esecuzione del codice scritto con il suo ide e non li ha dichiarati formalmente nella sua stessa documentazione (quella di val() per intenderci) , xojo compie un errore grande come una casa.

se tu sei un ingegnere edile e dici ad un muratore di mettere un centimetro di calce e poi un mattone e continuare fino al soffitto, poi, non puoi pretendere che il muratore sia in grado di sapere se i calcoli fatti de te siano corretti e pretendere che il muratore sappia se la casa verr giu al primo movimento tellurgico. !!! o pretenderesti questo ?? no perche mi parete pagati da xojo tra tutti…

qui si tratta di separare i compiti,
quindi , chi crea un ide per permettermi di sviluppare un programma non deve pretendere da chi sviluppa che questo conosca come xojo andra a rappresentare i dati in memori a !!!
nello specifico, chi crea l’ide. deve solo far in modo che un dato convertito da una forma ad un altra ,non cambi il suo valore , soprattutto se non esistono problemi di rappresentazione di questo dato convertito ( il riferimento alle prime contestazioni fatte da antonio )

poi, se a voi piace prenderlo in saccoccia e magari, dover riprendere il codice in mano in futuro in quanto vengono fuori anomalie di calcolo , e non capire perche certe cose non tornino , siete liberi di fare il tafazzi della situazione…

Guarda che ci sono fior fiore di programmi che fanno calcoli scritti in Xojo, ma anche in altri linguaggi, che non hanno problemi.
Non filosofia pratica.
Per te la rappresentazione visuale di un numero il suo valore (la forma sostanza), nel calcolo numerico non cos.
Ci sono corsi per questo, ci sono standard per questo.

Ma ovviamente ci sbagliamo tutti.

Nel tuo mondo perfetto e preciso quanto vale pi? quanto fa 1/3?

Valutare l’impatto di queste cose fa parte della progettazione. Valutare l’ordine di grandezza delle distorsioni indotte dal calcolo numerico nelle dimensioni del tuo progetto.
Altrimenti devo immaginare che se devi calcolare l’area di un cerchi di raggio 1metro utilizzi pi con un milione di decimali.

PS: l’esempio di val non era per far vedere che “123.45” dava 123.45 ma che tipo di valori vengono convertiti tenendo conto di una serie di casi possibili di stringhe. (e in ogni caso 123.449999999999999 scritto con 2 decimali 123.45 come mostrato)

Per quanto riguarda l’esempio della casa proprio un esempio di quello che ti dicevo: ti preoccupi di un potenziale errore di una parte su 100 mila miliardi, mentre ogni mattone pu avere un’approssimazione in peso e dimensioni molto maggiore e lo stesso vale per la calce cui spessore e densit oltre che componenti e resa possono variare in modo anche maggiore.

se la casa viene gi per altri motivi: non esiste ingegnere degno di questo titolo che accetti una soluzione cos border line!

Le case vengono gi perch non metti i ferri come calcolato (numero di ferri nel pilastro), usi materiali con rese difformi (non approssimazioni di peso e resistenza, ma ordini di grandezza diversi) etc.