Redondear lejos de cero
Inspirado por Round hacia cero .
Dado un ingreso numérico a través de cualquier método razonable, redondea el número "lejos de cero": los números positivos se redondean hacia arriba y los negativos se redondean hacia abajo.
Si tiene la intención de tomar la entrada como una cadena (a través de STDIN, por ejemplo), debería poder manejar números con o sin el punto decimal. Si lo toma como un número, al menos debería ser capaz de manejar la precisión de punto flotante (no se requiere precisión doble) o números racionales.
Puede generar un número de coma flotante con el punto decimal (por ejemplo, 42.0) si lo desea. (O incluso hacer que algunos casos de prueba generen coma flotante y algún número entero de salida, si acorta su respuesta).
Las lagunas estándar no están permitidas, etc., etc.
Casos de prueba
-99.9 => -100
-33.5 => -34
-7 => -7
-1.1 => -2
0 => 0
2.3 => 3
8 => 8
99.9 => 100
42.0 => 42
-39.0 => -39
.0
que parecen sugerir los casos de prueba?-0.1
y0.1
Respuestas:
Excel, 13 bytes
Alternativa
fuente
EVEN
, qué extraña función ..R, 32 bytes
fuente
Jalea , 4 bytes
Un enlace monádico que acepta un número que produce un número entero.
Pruébalo en línea!O ver un conjunto de pruebas .
¿Cómo?
fuente
¡
para los números negativos? No creo que esté documentado¡
la naturaleza repetitiva se implementa con unfor index in range(repetitions)
bucle en el código.range([stop=]-1)
está vacío, ya que porstart
defecto0
y porstep
defecto1
y "Para un paso positivo, el contenido de un rangor
está determinado por la fórmular[i] = start + step*i
dondei >= 0
yr[i] < stop
". docs¡
El comportamiento de él se basa en el de Pythonrange
erange(-1).__iter__().__next__()
inmediatamente arrojaStopIteration
.Python 3 , 23 bytes
Pruébalo en línea!
-1 byte gracias a xnor
fuente
(1|-(i>0))
para guardar un byte apagado(1,-1)[i>0]
.g=lambda r:0if r==0 else(int(r)+r/abs(r)if r/int(r)!=1 else r)
Jalea ,
54 bytesPruébalo en línea!
Esta respuesta Stax recursiva de puertos en Jelly, así que verifique esa respuesta para obtener una explicación.
-1 byte gracias a Nick Kennedy
Jalea ,
65 bytesPruébalo en línea!
-1 byte gracias a Jonathan Allan
Como funciona este
fuente
ĊḞ>?0
funcionaría como lo hace tu 6.AĊ×Ṡ
es 4 y funcionalmente idéntico a su primera respuesta.Java (JDK) , 18 bytes
Pruébalo en línea!
Explicaciones
Utiliza a
BigDecimal
como entrada y salida.BigDecimal
tiene un métodosetScale
que establece la escala del número. El primer parámetro es el número de dígitos después del separador de puntos, el segundo es el modo de redondeo.ROUND_UP
es el redondeo "lejos de cero" y tiene un valor de0
modo que codifico ese valor.fuente
Vim, 36 bytes / pulsaciones de teclas
Pruébalo en línea! o verificar todos los casos de prueba!
Explicación:
fuente
$F-a <esc>
lugar de la primera línea y una macro con/
como condicional en lugar de:g
y:norm
da 29 bytes tio.run/##HczBCoJAFEZhWva/QpuLCNbizoxalBXRInqJMpjGCYVwmkx7/…J , 6 bytes
Pruébalo en línea!
Solo un cambio de 1 carácter con respecto a mi respuesta a la pregunta del primo .
fuente
C # (compilador de Visual C #) ,
41 bytes27 bytes24 bytesPruébalo en línea!
Primera publicación aquí, me divertí mucho, espero que les guste. Un poco sintió que el lugar de C # está vacío aquí
-14 tnx a @ datos vencidos
-3 tnx a @ night2
fuente
Code golf submission
funcionalidad, solo agregué un poco de mis propias palabras al final, pero para editar simplemente cambié esa línea de código, y ahí mismo, olvidé actualice el enlace, que nos lleva de vuelta al primer paso, para modificar solo una vez, un poco SOLIDO aquí, de todos modos, tnx para la pista tambiénEncantamientos rúnicos ,
1816 bytesPruébalo en línea!
"Agrega" (lejos de cero) 0.999999 y muestra el resultado.
µ
es lo más parecido a un infinitesimal en los operadores del lenguaje. Con unTrunc(x)
comando que funcione correctamente , la respuesta ahora es compatible0
como entrada.fuente
divide by input
para obtener el "signo" del valor de entrada, que por supuesto, se divide por 0 cuando la entrada es 0. No hay forma (buena) de evitarlo en este momento. Necesitará este compromiso primero. Golpearé a Dennis (beneficio secundario, la respuesta se acortará).0
correctamente.Stax , 6 bytes
Ejecutar y depurarlo
Procedimiento:
fuente
C,
944339 bytesgracias a ceilingcat por 39 bytes
TIO
fuente
Retina 0.8.2 , 38 bytes
Pruébalo en línea! El enlace incluye casos de prueba. Explicación:
Elimine los ceros después del punto decimal, para asegurarse de que el número no sea un entero; las siguientes dos coincidencias fallan si no hay dígitos después del punto decimal.
Si la parte entera es todo
9
s, prefija a0
para permitir que el incremento se desborde.Incremente la parte entera del número.
Eliminar la parte fraccionaria del número.
fuente
05AB1E , 6 bytes
Un 5-byter definitivamente debería ser posible.
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
JavaScript (ES6), 20 bytes
Pruébalo en línea!
Comentado
fuente
n=>(~~n-n%1)%1+n
) hasta que descubrí que mi código no funcionaba para números entre -1 y 1. Es posible que pueda descubrir cómo hacer que esto funcione con los últimos 3 bytes que hay ¡izquierda!Perl 6 , 18 bytes
Pruébalo en línea!
Explicación
fuente
MathGolf , 5 bytes
Pruébalo en línea!
Explicación
Es bueno encontrar uso para el
‼
operador.fuente
PHP , 30 bytes
Pruébalo en línea!
Si el número no es entero, se le agrega el signo -1 (para decimales negativos) o 1 (para decimales positivos) y luego se imprime una parte entera del nuevo número.
PHP , 32 bytes
Pruébalo en línea!
Básicamente salidas
floor
de entrada si es menor que 0, de lo contrarioceil
.PHP , 34 bytes
Pruébalo en línea!
fuente
Brachylog , 7 bytes
Pruébalo en línea!
o
⌉₁ℕ₁|⌋₁
.fuente
Wolfram Language (Mathematica) , 18 bytes
Pruébalo en línea!
fuente
Factor , 57 bytes
Pruébalo en línea!
fuente
APL (Dyalog Unicode) , 15 bytes
Pruébalo en línea!
Dfn simple. Usos
⎕IO←0
.Cómo:
fuente
sed, 131 bytes + 2 bytes para
-r
banderaSin golf
fuente
Perl 5
-pF/\./
, 35 bytesPruébalo en línea!
fuente
3.0
. Para los interruptores,-pF\.
es suficiente://
son opcionales.0.0
es ciertoJavaScript (node.js),
302321 bytesInspirado en la respuesta de C #.
¡Gracias a @Value Ink y @Gust van de Wal por -7 bytes!
Gracias de nuevo, @Gust van de Wal por otros -2 bytes.
fuente
+=
cuándo+
hará el truco en este caso? -1 byteparseInt()
, solo lo usaría~~
al comienzo u otro operador bit a bit como|0
o^0
al final para guardar otro fragmento de bytes+=
, gracias por señalarloPerl 6 , 19 bytes
Pruébalo en línea!
No es la solución más corta, pero estoy trabajando en ello. Básicamente, esto trunca el número, luego agrega uno lejos de cero si el número no estaba completo para empezar
fuente
Java (OpenJDK 8) , 43 bytes
Pruébalo en línea!
fuente
return
declaración explícita .(int)a/a<1
aa%1!=0
: 30 bytesBigDecimal.setScale
método que da excelentes resultados, como lo demuestra mi respuestaJapt , 6 bytes
Pruébalo aquí
fuente
Rojo , 46 bytes
Pruébalo en línea!
La versión ligeramente más legible es 2 bytes más larga (¡esos nombres de funciones largos!):
fuente
Scala , 16 bytes
Pruébalo en línea!
Scala , 22 bytes
Pruébalo en línea!
fuente