Stesso input, stesso calcolo, output diverso


Buongiorno a tutti, ho creato questo codice di calcolo, ma non capisco perché valori di input uguali mi danno output diversi anche se di pochi decimi.
Grazie

Difficile analizzare in dettaglio con solo degli screenshot…
Forse è il panel che ti frega. Il panel arrotonda a tot cifre decimali… magari vedi numeri interi ma sotto sotto hanno qualche miliardesimo di scostamento dall’unità?

Fai un:
Print(Convert.ToString(valore));
… sono tutti veramente uguali i valori?

Cosa succede se passi i tuoi “valore” attraverso un parametro “int” ?

Edit:
anche i valori di “r” non si vedono dallo screenshot… è quasi inutile parlarne senza file .gh in mano..

1 Mi Piace

Sono fuori, ma c’è tutto, basta riportare quel codice. Si le cifre sono tutte uguali, double.

Buongiorno Luca

Emissione dov’e’ ?
campo dov’e’ ?
r dov’e’ ?

… io non li vedo … :thinking:

…no, emissione, campo e r non si vedono.
Ho un déjà-vu. Senza il file .gh e dati perdiamo tempo tutti. Andare a spanne guardando la foto di un monitor è porco produttivo.

Se riesci a caricarlo il thread ha molto più senso di esistere…
(non concluderlo senza caricare niente come è successo altre volte… :smiling_face_with_tear: )

Ad ogni modo, l’esecuzione di quel codice sicuramente non ha errori.
È sicuro al 100% ti sia sfuggito qualcosa sui dati di input. Prima di c#.
O i “set di dati” non sono uguali in modo palese, o non sono uguali ma in modo subdolo (come ti dicevo prima, i panel arrotondano…).
“Set di dati” veramente uguali danno risultati uguali. Questo è certo.
Il problema è fuori dal contesto c#… Ma non possiamo speculare più di un tot senza il file. La foto non basta.

Tranquillo che Rhino non ti fa scherzi di questo tipo. Saresti il primo.


Se mi passi un .gh con i dati di input internalizzati su parametri nel file , sicuramente ti trovo l’errore.
In alternativa, cerca tu… Io fossi in te partirei con il Covert.ToString che ti dicevo prima, per verificare se sono veramente “uguali” i vari valori.

1 Mi Piace

Questo è quello che intendo:


arrotondamenti subdoli.gh (10,2 KB)
Nota come il primo check di ugualianza restituisce “false” anche se i due panel mostrano lo stesso valore: 57.0002 .
(Cosa che forse sta accadendo nel tuo primo screenshot nel “valore” o negli altri input non visibili).

… questo perché i panel mostrano al massimo fino al milionesimo di unità, il resto viene arrotondato.
Quel 10^-9 che sommo/sottraggo viene quindi nascosto, non più reso visibile… ma c’è ancora!

Nota poi, che usando l’output del panel, la verifica di ugualianza restituisce “true” perché effettivamente in quel punto stiamo usando due valori identici: il testo del panel ri-convertito nuovamente in numero.

Passare “attraverso” un panel ti permette di rimuovere/arrotondare i decimali più piccoli, simile a quanto sarebbe se passassi “attraverso” a un parametro “int”.
double>text>double
Questa cosa si può fare anche con punti e vettori … con lo stesso problema: i valori di coordinate/componenti vengono arrotondati, passando “attraverso” un panel, il punto/vettore in uscita non è idento a quello in entrata.
Io di prassi evito a priori di usare l’output di un panel… salvo quando devo “assemblare” velocemente un punto/vettore semplice e statico tipo “1,0,1” per definire una direzione a 45° o situazioni simili…


I c# sono dei banali A=Convert.ToString(x); x è double.

3 Mi Piace

Ciao Emiliioooo

r fai Tu, Q c’è di default e i possibili valori ci sono, potete mettere quello che vi pare, dalla firma del metodo di capisce cosa vuole in input

1 Mi Piace

Grazie Ric, ok do un occhiata appena possibile e vi aggiorno.

Ad ogni modo veramente, come input, se ti attieni alla firma puoi mettere ciò che vuoi.

Ciao Luca !

Si’, ma Emissione non c’e’, ed e’ quella che indica l’espressione da calcolare …

Inoltre, secondo me, con solo due foto (nemmeno degli screenshot) non so quanta gente avra’ voglia di impazzire a ricopiare il testo C#, col rischio di sbagliare.
Ci vorrebbe almeno un copia&incolla del testo suddetto nel messaggio, con i suoi backticks, in modo da poterlo riportare velocemente e senza errori nel componente.
Ma forse sono pessimista … :wink:

1 Mi Piace

Signori avete ragione che col copia incolla del codice è meglio, appena posso lo giro.
Non per insistere, figuriamoci, anzi grazie sempre per la disponibilità e amicizia, ma emissione è un intero qualsiasi (sempre come da firma, le lista è riportata nell immagine del primo post, ma comunque aspettate che vi giri il gh). A più tardi

1 Mi Piace

A me il codice c# non serve. :sweat_smile:
Secondo me è CERTO che il problema è prima e fuori di c#.
Voglio vedere che è successo.
Aspetto il .gh con dati internalizzati per poter replicare quello che vedi te.

forum.gh (10,4 KB)
a voi il file.

Il problema col pc di casa non si presenta.


Potrebbe essere il Relay che ho tolto e rimesso?

1 Mi Piace

Non si presenta perche’ nella def allegata la linea 93 e’ diversa …
invece di

r * r

c’e’ scritto

1 * 1

Se usi l’espressione originale, si ripresenta, almeno qui …

EDIT

Il valore di r in input non e’ costante, per cui il risultato del calcolo varia.

1 Mi Piace

Se hai ricreato manualmente dei dati con degli slider che generano dei valori interi “puri”, il problema non lo vedi più …
… e perché ci hai passato una versione con il c# diverso ? :thinking:
Finché non alleghi la situazione dove é possibile replicare il problema che descrivevi nel primo post tutto questo é inutile.

Basta anche solo il componente c# ma con i dati internalizzati in tutti i parametri di input.

No, il relay non esegue alcun tipo di operazione sui dati che passa. Può solo essere attivo e disattivo, nient’altro.


Se non trovi il file originale che aveva il problema può solo significare che avevi visto male, i dati di input erano effettivamente diversi.

Ric, non mi piace perdere tempo, non vi passo cose diverse. Lo script ce l ho a lavoro, e in quel pc non accedo al forum; quindi me lo sono mandato via mail per poi girarvelo e ho continuato al lavorarci facendo altre modifiche a tutta la definizione. Siccome quel componente è usato diverse volte evidentemente ho preso il componente avente r correttamente posto su 1 (graficamente simili e la vista comincia a fare questi scherzi). Ad ogni modo grazie per la disponibilità. Non dovrebbe presentarsi.

Luca, le immagini servono per mostrare problemi di visualizzazione in rhino. Il codice si condivide, anche solo in forma minimale / essenziale.

1 Mi Piace