¿Cómo se convierte un doble en el int más cercano?¿Cómo podría convertir un doble al valor entero más cercano?
Respuesta
Uso Math.round()
, posiblemente en conjunción con MidpointRounding.AwayFromZero
por ejemplo:
Math.Round(1.2) ==> 1
Math.Round(1.5) ==> 2
Math.Round(2.5) ==> 2
Math.Round(2.5, MidpointRounding.AwayFromZero) ==> 3
double d = 1.234;
int i = Convert.ToInt32(d);
manejadores de redondeado de este modo:
redondeado al entero con signo de 32 bits más cercano. Si el valor está a mitad de camino entre entre dos números enteros, se devuelve el número par; es decir, 4,5 se convierte en 4, y 5.5 se convierte a 6.
Mucho mejor que 'Math.Round' ya que devuelve un int según sea necesario. – Keith
@Keith: pero redondea de forma no válida ** incluso.5 ** a * incluso * en lugar de * incluso + 1 * ... –
@ robert-koritnik. No estoy seguro de por qué eso es "inválido". OP no especificó una regla de redondeo preferida, y "redondear .5 a la par más cercana" es la regla estándar de hace mucho tiempo. Siempre redondeando tiene efectos estadísticos no deseados. – Keith
double d;
int rounded = (int)Math.Round(d);
Estoy desarrollando una calculadora científica de que el deporte un botón Int. He encontrado la siguiente es una solución simple, fiable:
double dblInteger;
if(dblNumber < 0)
dblInteger = Math.Ceiling(dblNumber);
else
dblInteger = Math.Floor(dblNumber);
Math.Round veces produce resultados inesperados o indeseables, y la conversión explícita a entero (a través de yeso o Convert.ToInt ...) a menudo produce valores erróneos para números de mayor precisión. El método anterior parece funcionar siempre.
¿no redondea todos los números negativos y redondea todos los números positivos? Ese no es necesariamente el entero "más cercano". –
este no es el número más cercano. –
Dado 1.99, esto devuelve 1.0. –
También puede utilizar la función:
//Works with negative numbers now
static int MyRound(double d) {
if (d < 0) {
return (int)(d - 0.5);
}
return (int)(d + 0.5);
}
Dependiendo de la arquitectura es varias veces más rápido.
Esto fue perfecto para mí ya que Math.Round no funcionaba como yo quería. – Johannes
@cullub sí lo hace. Convierte el doble d que tenía 0.5 anexado a él, a un número entero. – Darrell
Este es mi método preferido: funciona de una manera muy simple. Mucho más corto y más fácil de leer que Math.Round (d, MidpointRounding.AwayFromZero) y más conciso que usar una instrucción if para elegir redondear o redondear. Y, de hecho, devuelve un número entero al final, no un doble – binderbound
Sé que esta pregunta es antigua, pero la encontré en mi búsqueda por la respuesta a una pregunta similar. Pensé que compartiría el consejo muy útil que me han dado.
Al convertir a int, simplemente agregue .5 a su valor antes de la bajada. Como downcasting to int siempre cae al número más bajo (ej. (Int) 1.7 = 1), si tu número es .5 o superior, al agregar .5 lo traerá al siguiente número y tu downcast a int debería devolver el valor correcto . (Por ejemplo, (int) (1.8 + .5) = 2)
Espero que esta respuesta sea útil para cualquier persona.
El problema es si intenta convertir valores negativos de esa manera. Por ejemplo -1.25 terminará igual a 0. (-1.25 + 0.5 = 0.75, y una vez arrojado a int es 0). Entonces necesitas restar 0.5 de los valores negativos. – Eternal21
- 1. ¿Cómo redondear el doble al número entero más cercano y luego convertirlo en un flotador?
- 2. Redondea al entero más cercano
- 3. Cómo convertir un flotador a un Int redondeando al entero entero más cercano
- 4. Powershell - Redondee al número entero más cercano
- 5. ¿Cómo redondear un doble al int más pequeño más cercano en C?
- 6. Redondeando un flotador al entero más cercano en ruby
- 7. Redondee el valor al número entero más cercano en SQL ACTUALIZACIÓN
- 8. SQLite - obteniendo el valor más cercano
- 9. Decimal/doble a entero: redondee hacia arriba (no solo hacia el más cercano)
- 10. convertir número al múltiplo más cercano de 10
- 11. decimal redondo al décimo más cercano
- 12. Cómo redondear los números de coma flotante al entero más cercano en C?
- 13. ¿Redondea al décimo más cercano?
- 14. ¿Cómo redondeo al 0.5 más cercano?
- 15. redondeo al más cercano 0.25 javascript
- 16. Cómo redondeo un DateTime al Período más cercano
- 17. Redondeando al número entero más cercano .... estoy haciendo trampa o es esto más que adecuado
- 18. MySQL seleccionar el valor más cercano
- 19. LINQ para obtener el valor más cercano?
- 20. Cómo redondear un flotador al cuarto más cercano
- 21. ¿Cómo redondear un número al 10 más cercano?
- 22. Cómo convertir un valor entero a una cadena?
- 23. ¿Cómo puedo convertir el valor entero en valor decimal?
- 24. Convertir doble al hexágono en C#
- 25. ¿Por qué obtengo InvalidCastException al convertir un doble en decimal?
- 26. ¿Cómo convertir un doble a NSInteger?
- 27. Al convertir un booleano en un entero, devuelve -1 verdadero?
- 28. convertir un valor de cable a un entero en verilog
- 29. Round php timestamp al minuto más cercano
- 30. Convertir NSNumber (doble) valor en el tiempo
¿No hará 'Convert.ToInt32()' hacer lo mismo, o simplemente tira todo después del decimal? –
No produce un número entero, sino un doble. – gatopeich
Creo que hay una contradicción (es decir, error) entre las líneas 2 y 3 anteriores, ¿no? – Ronnie