Formato numeri

Ragazzi, da ignorante in GH azzardo una ipotesi … :roll_eyes: :wink: :grinning_face_with_smiling_eyes:

Non e’ che c’e’ differenza se inserisci semplicemente il Panel in un collegamento, e quindi lui ti mostra i dati formattati come sempre ma non li trasmette tra input e output senza ‘toccarli’ …
O se invece editi i dati nel Panel, e in questo caso l’ouput sara’ di testo, e quindi i numeri, ad esempio, vengono ricavati dal testo mostrato ?

… Non so se sono stato spiegato … :wink: :grinning_face_with_smiling_eyes:
Temo di no, va be’, non importa.

si, direi che è proprio il punto del problema :+1:

Puo’ darsi… :slight_smile: Ma nel senso che non e’ come supponevo … :confused:

panel-test.gh (7,6 KB)

Sembra che il Panel traduca in ogni caso i dati in testo.

Non so … forse Salvio parla di altro (non di un Panel) …

Meglio che ripassi la parola a voi esperti … :blush: :grinning_face_with_smiling_eyes:

se intendi quando dici: “editi i dati nel Panel”
io intendo nel “Set Multiple Numbers” questo ovviamente una volta internalizzati i valori all’interno
quando internalizzi i valori e come se li copiassi e te li trovi nel sottomenù “Set Multiple Numbers”
ed è in questa casella che io dico che bisogna aggiungere o eliminare l’ultimo rigo
e a questo punto senza nemmeno convertire i valori Equal funziona come dovrebbe.

ps ovviamente questo non cambia che come si è capito non bisogna assolutamente comparare valori float
però nel caso uno si trovasse con dei valori numerici internalizzati apparentemente interi si ricordasse di ciò

io sicuramente nel fare casini :rofl: :rofl:

1 Mi Piace

@inno @emilio non essendo pratico mediante queste verifiche con calcoli matematici, ma necessito di fare prove con un confronto pratico, e ricordando che in una definizione avevo replicato questa condizione:
un punto con coordinate 0 usando un serial n volte su asse X per poi spostarli a random su asse Z
tale operazione fatta manualmente in Rh, ma anche tramite componenti in Gh si ha questo risultato:

come si può notare, i valori X mostra 4 item in decimali separati dal “punto” seguito dallo “0”
apparentemente interi come gli altri, ma moltiplicandoli col Power si riscontra la situazione detta finora.
quindi si può pensare che nella stesura del codice sia stata inclusa questa ipotesi, di differenziare i valori?
quindi riassumendo quando troviamo valori 50 60 70 sono veramente interi, mentre quando visualizziamo valori come 20.0 o 40.0 anche se sembrano interi in realtà indicano che sono dei valori con dei decimali.

ovviamente ogni tesi è fatta per essere smentita, infatti se aumento il power oltre 10 diventano tutti decimali
ma credo che questo sia riconducibile al fatto che qualsiasi numero corrisponda ad una sequenza binaria
(cosa che Emilio non si è sprecato a spiegarmelo in altro post con 1000 modi)
considerando la conversione binaria, alla fine si può concludere che nessun numero è un vero intero?

no, sono tutti float :slight_smile: magari son tutti “numeri tondi” (e quindi quando li passi nel Panel non ti visualizza la parte decimale) ma possiedono comunque una parte decimale, e la confusione è data solo dal fatto che il Panel non la visualizzi

in generale, andando con il puntatore del mouse su qualsiasi input/output ti va vedere il type

l’icona “0.1” rappresenta un numero con parte decimale, l’icona con un “7” rappresenta un intero

le uniche situazioni in cui GH ti da un output di tipo int mi vien da pensare sia in contesto Liste, in particolare su Index, Count, ecc etc

2 Mi Piace

esatto, ho mancato di specificarlo era proprio questo che volevo sottolineare, che float scinde i numeri
pur essendo tutti numeri float, però li divide in numeri tondi 50 60 70 e numeri con decimali 20.0 o 40.0

ps di sicuro per voi esperti il risultato di questa foto non’é una novità:

moltiplicando con power, quando il numero è visualizzato come 10 riporta intero
mentre viceversa, quando il numero è visualizzato come 20.0 riporta come float

tempo fa quando aprii il 3d sui decimali era proprio questo che non comprendevo,
per il ragionamento che facevo, di default in Gh mi aspettavo il risultato con power

string che diventa float che ritorna string che ridiventa float e poi finisce int :slight_smile:

1 Mi Piace

  1. questo ormai è lapalissiano, qualsiasi valore in uscita dal panel è una stringa
  2. mentre dal panel collegandoli a componenti con uscita numero riporti numero
  3. interessante che l’elemento con indice 0 sia un numero intero e non un float

ps spero che questa affermazione non sia una vera è propria boiata?

Non direi, Salvio …
Ovviamente i numeri di tipo ‘int’ sono degli interi.
Anche il tipo ‘float’ puo’ rappresentare esattamente parecchi interi …
Non sono in grado di dirti quanti, ma credo almeno tutti quelli fino a 2^52 (o 53 :confused:) … e credo anche altri …
Ci vorrebbe qualcuno ferrato in matematica … :neutral_face:

1 Mi Piace

mi riferivo ad una situazione come quella della foto che ho già postato nel messaggio 25:
come vedi nei primi 2 panel vengono evidenziati i quanttro valori che hanno i decimali, mentre nell’ultimo panel (dove il power l’ho impostato a 10) alla fine si sono trasformati tutti in decimali anche quelli interi.

ps non avevo fatto caso, come l’ultima foto di Inno, anche l’indice 0 in questo caso è rimasto intero :thinking:
io non sono esperto in queste cose lo sai, mi sono basato sulla pratica fatta, mi sarei dovuto fermare già da tempo, per adesso è meglio che faccio finta di aver capito qualcosina in più e mi ritiro contento :sweat_smile:

Credo che qui sia solo un problema di ‘dimensioni’, per cosi’ dire … :wink:
Quei numeri sono troppo grandi per essere rappresentati da un ‘int’, almeno in C#, che credo sia utilizzato per GH.
Ma il loro valore potrebbe benissimo essere esatto, cioe’ corrispondere ad un numero intero.
( Direi esclusi i 4 numeri evidenziati, che gia’ in partenza paiono non essere interi )

Aspetta … devo aver detto una cavolata.
Pensavo agli int a 32 bit, pero’ oggi di solito si usano quelli a 64 bit …
Mah.
Forse e’ una scelta di GH di mostrare come float gli interi per cui servono piu’ di 32 bit …
:confused:

e vabbè Emilio, il fatto che hai delle perplessità in merito, un pò mi consola :wink:
(forse non’é proprio un argomento scontato)

1 Mi Piace

È esattamente così.

MAI usare l’output di un panel se il dato originario era prima del panel. … salvo che uno sappia esattamente cosa sta facendo.


In realtà lo è…

Salvio … non vorrei essere scortese, ma un thread così lungo a-la “caccia al tesoro” solo perché non hai voluto caricare il .gh in questione… è ormai abbastanza inutile.

Se arginavi il problema in maniera semplice e lo allegavi qui nel forum il problema sarebbe stato risolto e ti sarebbe stato colmato ogni dubbio in 3-4 risposte.

Io non sono un mod o altro, questa è solo un’opinione.

1 Mi Piace


Il componente della moltiplicazione si trova ad interpretare la stringa che gli fornisci e quindi a convertirla in un tipo moltiplicabile (per ogni input fa tentativi tra int, float, complesso, vettore, colore, ecc ecc).

Semplicemente il primo numero della serie che hai creato è il default, 0, un numero senza decimali, e quindi lo ha convertito sin da subito in un numero intero, 0.
Moltiplicalo quante volte vuoi e rimarrà 0 tondo tondo.

Se avesse trovato dei decimali nella stringa, lo avrebbe interpretato come float:


Se un panel ti scrive “5.0” il “.0” è tanto per dirti che non è un numero intero, ma “5+qualcosina”

Al contrario il multiplication, se vede un punto . (ovvero un separatore di decimali) , interpreta il numero come float a prescindere.

2 Mi Piace

Ciao Riccardo

Quindi sembra che GH utilizzi gli interi a 32 bit … giusto ? :confused:

Esatto.
Il numero più grande che può contenere è 2147483647, ovvero 2^31-1.
32 bit, di cui 1 usato per il segno.
2021-09-11 15_56_33-Window

2021-09-11 16_03_22-Window

1 Mi Piace

Penso perché GH è realizzato in C# e si appoggia alle librerie .NET per le quali il tipo valore int é a 32 bit.

1 Mi Piace

Questo è il. Net che converte il double in int perché è un operazione che può fare senza perdite di dati e senza errori.

1 Mi Piace