2012-09-07 9 views
8

tengo una lista de números en una lista grande de largo importado de un CSV,número ios ronda a int o 0,5

necesito consultar la lista después de que el usuario introduce un número en un campo de texto, por lo que después de la utiliza introduce el número necesito tomar el número al entero más próximo o para X.5

por ejemplo

1; 
1.5; 
2; 

y así sucesivamente

así que si el usuario entra en 1.2, se irá a 1 Y si el usuario entra 1.45 va a 1,5

por lo que es la regla general, pero para una larga serie de números,

así que ¿cómo puedo lograr esto?

muchas gracias!

Respuesta

28

a hacer esto:

x = round(x * 2.0)/2.0; 

Esta rondas x al múltiplo más cercano de 0,5.

+0

O simplemente 'x = round (x + 0.5);' que debe ser un cálculo más barato para llevar a cabo (sólo una adición en lugar de una multiplicación y una división) –

+3

@David: no, eso solo redondeará (hacia arriba) a un número entero - el OP quiere redondear al múltiplo más cercano de 0.5, AFAIUI. –

+1

Muy cierto. Leí la pregunta simplemente como redondeando. +1 –

1

se vería como algo más adelante en Swift

var valueToBechanged = 3.45 
// Casting the valueToBechanged to Double because it can be Float, Int etc 
var roundedRating : Double = round(Double(valueToBechanged) * 2)/2.0