Convertir al número entero más cercano - Sin redondeoHola.
Siendo nuevo en JMP, estoy seguro de que este es un error típico de principiantes.
Necesito convertir un número decimal en un número entero sin redondear.
Ejemplo 1: el valor 0.5986 se copia de la columna1 y se guarda en la columna2. 0 debe guardarse en la columna 2. En cambio, 1 está siendo salvado.
Ejemplo 2: el valor 1.5986 se copia de la columna1 y se guarda en la columna2. 1 debe guardarse en la columna 2. En su lugar, 2 se están salvando.
Intenté usar Round (x, 0), pero el número siempre se redondea hacia arriba.
También intenté formatear el valor de la columna1 y convertirlo de nuevo en un número (falla).
La columna 1 está definida:
New Column( "Time",
Numeric,
Continuous,
Format( Best, 12),
);
La columna 2 está definida:
New Column( "WholeSeconds",
Numeric,
Continuous,
Format( Fixed Dec, 5, 0),
);
Código:
For Each Row(
lvTime = dt:Time;
dt:WholeSeconds = Round( lvTime,0);
);
Cualquier ayuda es muy apreciada.
Gracias.
ScriptingRe: Convertir al número entero más cercano - Sin redondeoPuede utilizar las funciones Floor () y Ceiling ().
Re: Convertir al número entero más cercano - Sin redondeoAdemás de @txnelson , aquí está el código:
Como puede ver, puede usar una fórmula o valores escritos en esa columna.
Es mejor evitar los bucles (para cada fila), si las tablas pueden hacerlo sin ellos, si es posible.
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: Convertir al número entero más cercano - Sin redondeoGracias, Georg y txnelson.
También aprecio la sugerencia de resolución de nombres. Todavía no lo había encontrado en la documentación.
Supongo que la recomendación para evitar bucles se debe a un impacto negativo en el rendimiento. ¿Está bien? ¿Cuál es (aproximadamente) el impacto / diferencia en el rendimiento utilizando ciclos frente a fórmulas de tabla?
¡Gracias!
Lawrence
Re: Convertir al número entero más cercano - Sin redondeoEstimado @swanthog , en un script probé tres métodos diferentes para calcular un cuadrado y = x * x en una tabla con diferente número de filas.
El resultado es
- que el bucle lleva diez veces más tiempo
- como la operación de la mesa
- y el cálculo de la matriz es 5 veces más rápido que la operación de la tabla
También en términos de código limpio y menos errores, es en mi opinión una buena recomendación para evitar bucles, si hay otros métodos (tabla y matriz), que tienen una funcionalidad incorporada para abordar cada elemento.
Pero para scripts pequeños, y si el rendimiento no es un problema, los bucles también están bien. También cuenta la legibilidad (a los ojos del escritor).
