Je veux sol un double par sa décimale avec longueur décimale variable (dans l’iphone SDK)
voici quelques exemples pour vous montrer ce que je veux dire
NSLog(@"%f",[self floorMyNumber:34.52462 toPlace:2); // should return 34.52 NSLog(@"%f",[self floorMyNumber:34.52662 toPlace:2); // should return 34.52 NSLog(@"%f",[self floorMyNumber:34.52432 toPlace:3); // should return 34.524 NSLog(@"%f",[self floorMyNumber:34.52462 toPlace:3); // should return 34.524 NSLog(@"%f",[self floorMyNumber:34.12462 toPlace:0); // should return 34.0 NSLog(@"%f",[self floorMyNumber:34.92462 toPlace:0); // should return 34.0
Des idees pour faire cela?
-(double)floorNumberByDecimalPlace:(float)number place:(int)place { return (double)((unsigned int)(number * (double)pow(10.0,(double)place))) / (double)pow(10.0,(double)place); }
Une autre solution:
10 (exemple: 13.1), 100 (exemple: 12.31) sont placés, etc.
double valeur = (double) ((unsigned int) (valeur * (double) placée)) / (double) placée
Si vous les arrondissez simplement pour les imprimer, utilisez les spécificateurs de format printf standard. Par exemple, au lieu de “% f”, pour imprimer 3 décimales, utilisez “% .3f”.
Utilisez sprintf (ou un meilleur snprintf) pour le formater en chaîne, puis rogner la fin de la chaîne.
Multipliez-le par 10 ^ (décimales), convertissez-le en un entier, puis divisez-le par 10 ^ (décimales).
double floorToPlace(double number, int places) { int decimalPlaces = 1; for (int i = 0; i < places; i++) divideBy *= 10; return (int)(number * decimalPlaces) / (double)decimalPlaces; }