2017-01-31 4 views
3

Je suis un peu confus au sujet de la suite du comportement int() -fonction dans ColdFusion 10 (10,0,20,282462):Comportement inattendu de int()

<cfset dummy = 100 - (5859/(6510/100)) /> 
<cfoutput> 
    dummy = #dummy#<br><br> <!--- 10 ---> 
    int(10) = #int(10)#<br> <!--- 10 ---> 
    int(dummy) = #int(dummy)# <!--- 9 ---> 
</cfoutput> 

Quelqu'un peut-il me expliquer pourquoi int(dummy) retours 9 au lieu de 10?

+3

est en fait un flotteur. C'est simplement affiché comme un entier. Le sortir avec un format numérique pour voir la valeur réelle. –

+1

Pour confirmer que c'est un flottant, http://stackoverflow.com/questions/11208155/coldfusion-get-variable-type –

+0

Peut-être arrondir et ensuite utiliser Javacast? Cela retournera 10.

Répondre

0

int(dummy) retours 9 au lieu de 10 parce qu'il est essentiellement floor() dans d'autres langues, et votre réponse est peut-être 9 parce que pour la performance, par défaut, ils sont traités comme double.

Avez-vous entendu parler de PrecisionEvaluate()https://cfdocs.org/precisionevaluate

dummy = PrecisionEvaluate(100 - (5859/(6510/100))); 
writeOutput(dummy); 

vous obtiendrez 10 comme prévu

factice