2009-11-13 6 views
1

Lors du calcul d'un différentiel de handicap de golf, vous êtes censé tronquer la réponse à 1 décimale sans arrondir. Aucune idée pourquoi, mais ...sprintf() pour tronquer et non arrondir un flottant à x décimales?

Je sais comment faire en utilisant TRUNCATE() dans mySQL

SELECT TRUNCATE(2.365, 1); 
// outputs 2.3 

mais je me demandais si sprintf() pourrait le faire? La seule façon que je sais de travailler avec des décimales dans un flotteur est ...

echo sprintf("%.1f", 2.365); 
// outputs 2.4 

Répondre

7

Dans quelle langue est-ce? En supposant qu'il est C ou un de ses dérivés, et vous voulez toujours exactement en supposant une décimale, et en supposant que vos valeurs sont toujours non-négative, vous pouvez le faire:

float val = 12.3456; 
val = floor(val*10.0)/10.0; 
sprintf("%.1f", val); 

Y at-il une meilleure façon? Probablement. C'est juste ce qui me vient à l'esprit.

+0

Merci! Fonctionne pour moi en PHP! – jerrygarciuh

+1

En PHP '$ val = 12.3456; $ val = floor ($ val, 1); $ val = sprintf ("%. 1f", $ val); ' –

Questions connexes