2011-06-10 15 views
7

¿Cómo podemos redondear números decimales a 2 dígitos en iphone?¿Cómo redondear el número decimal a 2 dígitos en iphone?

Por ejemplo,

  1. 5345 -> 53

  2. 570 -> 57

  3. 89523 -> 90

I trató de usar nsformatter para esto y aquí está el código que utilicé,

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setMaximumIntegerDigits:2]; 
[formatter setRoundingMode: NSNumberFormatterRoundUp]; 

NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithInt:570]]; 

    [formatter release]; 
    NSLog(@"%@",numberstring); 

Sigo obteniendo el valor 70 incluso después de cambiar el modo de redondeo a diferentes opciones. Por favor, ayúdenme con esto

Gracias, Vinod.

Respuesta

4

Puesto que usted está buscando para reunir a los dígitos decimales, en realidad se debe proporcionar un flotador para esto y ajustar los dígitos fraccionarios máximo a 2. Probablemente usted está en busca de esto,

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setMaximumFractionDigits:2]; 
[formatter setRoundingMode: NSNumberFormatterRoundHalfUp]; 

NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:570.57018]]; 

[formatter release]; 
NSLog(@"%@",numberString); 
+0

Gracias por su sugerencia – Atom

11

Utilice este código simple en lugar del formateador;

myFloat = roundf(100 * myFloat)/100.0; 

espero que ayude.

O puede utilizar este

float roundedValue = round(2.0f * number)/2.0f; 
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setMaximumFractionDigits:2]; 
[formatter setRoundingMode: NSNumberFormatterRoundDown]; 
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:roundedValue]]; 
[formatter release]; 
0

respuesta de Deepak es probablemente exactamente lo que necesita, pero sólo estoy proporcionando una opción más para el bien de opciones. Estoy asumiendo que usted está utilizando NSNumber valores, por lo que habrá someNumber de ese tipo en el ejemplo:

NSString *numberString = [NSString stringWithFormat:@"%.2f", [someNumber floatValue]]; 
// this converts the NSNumber to a float, then formats the float in a string; 
NSNumber *formattedNumber = [NSNumber numberWithFloat:[numberString floatValue]]; 
// this extracts the float from the string and puts it back as an NSNumber 
0

Parece que no hay manera directa para redondear un número entero

Pero aún puedes hacerlo. Tienes que hacer un trabajo extra para convertir el número entero en un número fraccionario y algún truco para eliminar el "0". del valor flotante.

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4]; 
[formatter setRoundingMode:NSNumberFormatterRoundHalfUp]; 
[formatter setMaximumFractionDigits:2]; 

int n = 570; 
float f = [[NSString stringWithFormat:@"0.%d", n] floatValue]; 
NSNumber *number = [NSNumber numberWithFloat:f]; 
NSString *str = [formatter stringFromNumber:number]; 
[formatter setPositivePrefix:@"0."]; 
number = [formatter numberFromString:str]; 
[formatter release]; 
+0

Gracias por sus sugerencias – Atom

Cuestiones relacionadas