Converti nel numero intero più vicino - Nessun arrotondamentoCIAO.
Essendo nuovo in JMP, sono sicuro che questo è un tipico errore da principiante.
Devo convertire un numero decimale in un numero intero senza arrotondamento.
Esempio 1: il valore 0,5986 viene copiato dalla colonna 1 e salvato nella colonna 2. 0 dovrebbe essere salvato nella colonna2. 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 riconvertirlo in un numero (fallisce).
La colonna 1 è definita:
New Column( "Time",
Numeric,
Continuous,
Format( Best, 12),
);
La colonna 2 è 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.
Organizzazione dei contenutiAccesso ai datiMiscelazione e pulizia dei datiPersonalizzazione di massaQualità e ingegneria di processoCondivisione e comunicazione dei risultatiRe: Conversione 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 operazione di tabella
- e il calcolo della matrice è 5 volte più veloce dell'operazione della tabella
Anche in termini di codice pulito e meno errori, a mio avviso è una buona raccomandazione evitare i loop, se ci sono altri metodi (tabella e matrice), che hanno funzionalità integrate per indirizzare ogni elemento.
Ma per i piccoli script, e se le prestazioni non sono un problema, anche i loop vanno bene. Anche la leggibilità (agli occhi di chi scrive) conta.

Re: Conversione al numero intero più vicino - Nessun arrotondamentoGrazie, Georg, e txnelson.
Apprezzo anche il suggerimento per la risoluzione dei nomi. Non l'avevo ancora trovato nella documentazione.
Immagino che la raccomandazione per evitare i loop sia dovuta all'impatto negativo sulle prestazioni. È giusto? Qual è (approssimativamente) l'impatto/la differenza rispetto alle prestazioni utilizzando i loop rispetto alle formule di tabella?
Grazie!
Lawrence
Re: Conversione al numero intero più vicino - Nessun arrotondamentoInoltre @txnelson , ecco il codice per esso:
Come puoi vedere, puoi utilizzare una formula o valori scritti in quella colonna.
È meglio evitare i loop (per ogni riga), se le tabelle possono farlo senza, 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 ) ) )
);

Re: Conversione al numero intero più vicino - Nessun arrotondamentoÈ possibile utilizzare le funzioni Floor() e Ceiling().