62 votes

Arrondir un nombre flottant à l'entier supérieur en objective C?

Comment puis-je arrondir un flottant à la valeur entière suivante en Objective C?

1.1 -> 2
2.3 -> 3
3.4 -> 4
3.5 -> 4
3.6 -> 4
1.0000000001 -> 2

134voto

Anthony Blake Points 3424

Vous voulez la fonction plafond. Utilisée comme ceci :

float arrondiSup = ceil(autreflottant);

0 votes

Cela me montre de ne pas faire confiance à la première documentation que je lis. Tu as raison.

7 votes

Assurez-vous de mettre un flottant dans la fonction. ceil((largeur/100.) * 7.) fonctionne. ceil((largeur/100) * 7) ne fonctionne pas

2voto

Muhammad Asyraf Points 309

Chaîne de caractères RoundupFloat remarques( ce n'est pas la meilleure façon de le faire )
Langage - Swift & Objective C | xCode - 9.1
Ce que j'ai fait était de convertir la chaîne de caractères > float > ceil > int > Float > String
String Float 10.8 -> 11.0
String Float 10.4 -> 10.0

Swift

var AmountToCash1 = "7350.81079101"
AmountToCash1 = "\(Float(Int(ceil(Float(AmountToCash1)!))))"
print(AmountToCash1) // 7351.0

var AmountToCash2 = "7350.41079101"
AmountToCash2 = "\(Float(Int(ceil(Float(AmountToCash2)!))))"
print(AmountToCash2) // 7350.0

Objective C

NSString *AmountToCash1 = @"7350.81079101";
AmountToCash1 = [NSString stringWithFormat:@"%f",float(int(ceil(AmountToCash1.floatValue)))];

OU
vous pouvez créer une fonction personnalisée comme ceci
Swift

func roundupFloatString(value:String)->String{
  var result = ""
  result = "\(Float(Int(ceil(Float(value)!))))"
  return result
}

Appelée comme ça

    AmountToCash = self.roundupFloatString(value: AmountToCash)

Objective C

-(NSString*)roundupFloatString:(NSString *)value{
    NSString *result = @"";
    result = [NSString stringWithFormat:@"%f",float(int(ceil(value.floatValue)))];
  return result;
}

Appelée comme ça

    AmountToCash = [self roundupFloatString:AmountToCash];

Bonne chance! et Bienvenue! Soutenez ma réponse!

2voto

Ray Toal Points 35382

Utilisez la fonction ceil().

Quelqu'un a fait un peu de mathématiques dans la présentation en Objective C ici : http://webbuilders.wordpress.com/2009/04/01/objective-c-math/

2voto

lindinax Points 134

Tout simplement ne pouvait pas commenter la réponse de David. Sa deuxième réponse ne fonctionnera pas car le modulo ne fonctionne pas sur les valeurs en virgule flottante. Ne devrait-il pas ressembler à

if (originalFloat - (int)originalFloat > 0) {
    originalFloat += 1;
    arrondi = (int)originalFloat;
}

1voto

David Points 6605

Vous pouvez soit utiliser la fonction ceil() comme l'a indiqué Anthony :

float arrondiSup = ceil(autrefloat);

ou vous pouvez simplement ajouter un et le convertir en entier.

if (floatOriginal % 1 > 0)
{
     floatOriginal += 1;
     int arrondi = floatOriginal;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X