Conversion chiffre FLOAT en C++
speedminou
Membre
Bonjour,
J'ai été obligé de passer en C++ avec mes fichiers qui désormais ont pour extension .mm
Depuis tout mes nombres float ne sont pas affichés en entier, il n'y a pas les chiffres après la virgule, quand je veux afficher le nombre avec les virgules : [NSString stringWithFormat:@%.02f,time8]
une erreur s'affiche :
Invalid conversion from 'objc_object*' to 'int64_t'
Alors je suis peut-être à côté du problème mais j'ai vraiment besoin d'un ptit coup de main
Merci
J'ai été obligé de passer en C++ avec mes fichiers qui désormais ont pour extension .mm
Depuis tout mes nombres float ne sont pas affichés en entier, il n'y a pas les chiffres après la virgule, quand je veux afficher le nombre avec les virgules : [NSString stringWithFormat:@%.02f,time8]
une erreur s'affiche :
Invalid conversion from 'objc_object*' to 'int64_t'
Alors je suis peut-être à côté du problème mais j'ai vraiment besoin d'un ptit coup de main
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Dans l'historique de ton float time8 il y a quoi de particulier ? Tu récupère une valeur en retour d'une méthode ou quoi ? Si tu fait une assignation bête et méchante float test = 2.5 est-ce que tu arrive à l'afficher sans problème ?
Donc un NSTimer ajoute 0,01 toutes les 0,01ms à mon float nommé time8
timer8=[[NSTimer scheduledTimerWithTimeInterval:0.01f target:self selector:@selector(chrono userInfo:nil repeats:YES] retain];
time8 += 0.01;
ça fonctionne sans problème, le truc c'est que pour l'afficher correctement je dois le mettre sous cette forme :
[NSString stringWithFormat:@%.02fs,time8];
Et c'est là qui m'affiche le problème mais seulement dans une fonction, si je met juste time8 il n'y a que le premier chiffre qui est pris en compte pas ceux après la virgule.
J'espère que c'est assez clair parce que c'est pas évident à expliquer.
Sinon j'ai trouvé une solution pour ne plus avoir d'erreur :
int64_t([NSString stringWithFormat:@%.02fs,time8])
mais là ça me fait un nombre à 8 chiffres
Ya pas comme un problème là ? Si le type de timer8 est bien type float, cette ligne affecte un pointeur vers un objet de type NSTimer à une variable de type float....
Ce qui est évident si time8 contient une adresse mémoire vers un objet... Je pense qu'au lieu d'essayer de bidouiller, il faudrait arrêter de faire n'importe quoi
Ton NSTimer est une classe, si tu veux avoir le typedef utilisé en Cocoa pour les durées, c'est NSTimeInterval et pas NSTimer. NSTimer te sert à appeler une méthode toutes les X secondes, il faudrait faire un truc comme ça :
où _timestamp est une variable d'instance de type float.
Mais bon l'important ici et de relier la doc sur l'Objective-C et les objets.
C'est très perturbent
En plus de 10 ans de métier j'en ai vu des trucs qui semblent fonctionner correctement, mais qui en fait sont codés n'importe comment et sont prêts à ne plus fonctionner du jour au lendemain...
En fait j'ai cerné le problème, il faut que je sache comment afficher un chiffre à virgule en int64_t
(en gros :P )
Ton problème est donc ailleurs.
Comme dit zoc, c'est pas en faisant un peu n'importe quoi sans trop réfléchir et trouvant un truc qui semble marcher que c'est bon...