Converti al numero intero più vicino - Nessun arrotondamentoCiao.
Essendo nuovo in JMP, sono sicuro che questo sia un tipico errore dei principianti.
Devo convertire un numero decimale in un numero intero senza arrotondare.
Esempio 1: il valore 0,5986 viene copiato dalla colonna1 e salvato nella colonna2. 0 dovrebbe essere salvato nella colonna 2. Invece 1 viene salvato.
Esempio 2: il valore 1.5986 viene copiato dalla colonna1 e salvato nella colonna2. 1 dovrebbe essere salvato nella colonna 2. Invece 2 viene salvato.
Ho provato a utilizzare Round (x, 0), ma il numero è sempre arrotondato per eccesso.
Ho anche provato a formattare il valore dalla colonna1 e riconvertire in un numero (non riesce).
La colonna1 è definita:
New Column( "Time",
Numeric,
Continuous,
Format( Best, 12),
);
La colonna2 è definita:
New Column( "WholeSeconds",
Numeric,
Continuous,
Format( Fixed Dec, 5, 0),
);
Codice:
For Each Row(
lvTime = dt:Time;
dt:WholeSeconds = Round( lvTime,0);
);
Qualsiasi aiuto è molto apprezzato.
Grazie.
ScriptingRi: Converti al numero intero più vicino - Nessun arrotondamentoÈ possibile utilizzare le funzioni Floor () e Ceiling ().
Ri: Converti al numero intero più vicino - Nessun arrotondamentoInoltre @txnelson , ecco il codice per questo:
Come puoi vedere, puoi utilizzare una formula o valori scritti in quella colonna.
È meglio evitare i loop (per ogni riga), se le tabelle possono farne a meno, se possibile.
Names Default To Here( 1 );
cdt = New Table( "Example Floor",
add rows( 2 ),
New Column( "Time", Numeric, Continuous, Format( Best, 12 ), set values( [0.5986, 1.5986] ) ),
New Column( "WholeSeconds_formula", Numeric, Continuous, Format( Best, 12 ), Formula( Floor( :Time ) ) ),
New Column( "WholeSeconds_value", Numeric, Continuous, Format( Best, 12 ), set each value( Floor( :Time ) ) )
);

Ri: Converti al numero intero più vicino - Nessun arrotondamentoGrazie, Georg e txnelson.
Apprezzo anche il suggerimento per la risoluzione del nome. Non l'avevo ancora trovato nella documentazione.
Immagino che la raccomandazione per evitare i loop sia dovuta a un impatto negativo sulle prestazioni. È giusto? Qual è (approssimativamente) l'impatto / la differenza sulle prestazioni utilizzando i loop rispetto alle formule di tabella?
Grazie!
Lawrence
Ri: Converti al numero intero più vicino - Nessun arrotondamentocaro @swanthog , in uno script ho testato tre diversi metodi per calcolare un quadrato y = x * x in una tabella con un diverso numero di righe.
Il risultato è,
- che il ciclo impiega dieci volte più tempo
- come l'operazione del tavolo
- e il calcolo della matrice è 5 volte più veloce dell'operazione della tabella
Anche in termini di codice pulito e meno errori, è a mio parere una buona raccomandazione per evitare i loop, se ci sono altri metodi (tabella e matrice), che hanno funzionalità integrate per indirizzare ogni elemento.
Ma per piccoli script e se le prestazioni non sono un problema, anche i loop vanno bene. Anche la leggibilità (agli occhi di chi scrive) conta.
