J'ai donc un CString qui contient une valeur numérique, par ex. "45.05" et je voudrais arrondir ce nombre à une décimale.Arrondir une valeur contenue dans un CString
J'utilise cette funcion
_stscanf(strValue, _T("%f"), &m_Value);
pour mettre la valeur dans un flotteur qui je peux arrondir. Cependant dans le cas de 45.05 le nombre que j'obtiens est 45.04999 ... qui arrondit à 45.0 où l'on s'attendrait 45.1
Comment est-ce que je peux obtenir la valeur correcte de mon CString?
TIA
Appelez-vous une fonction ceil sur la valeur? Ou est-ce que strValue a 45.0499 après avoir appelé le _stscanf? – Gangadhar
m_Value a 45.04999 après avoir appelé –
C'est à cause de la représentation en virgule flottante en binaire. S'il vous plaît lire ceci pour savoir pourquoi cela se produit - http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html ou ce http://floating-point-gui.de/basic/. Longue histoire courte, pour les valeurs à virgule flottante, ne vous attendez pas à ce que la valeur exacte soit disponible - il y a une petite différence entre la valeur prévue et la valeur réelle. – Gangadhar