2017-01-31 20 views
3

Я немного запутался о следующем поведении int() -функции в ColdFusion 10 (10,0,20,282462):Неожиданное поведение 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> 

Может кто-нибудь объяснить мне, почему int(dummy) возвращается 9 вместо 10?

+3

манекен на самом деле поплавок. Это просто отображается как целое число. Выведите его с числовым форматом, чтобы увидеть реальное значение. –

+1

Чтобы подтвердить, что это float, http://stackoverflow.com/questions/11208155/coldfusion-get-variable-type –

+0

Может быть, кругом, а затем использовать Javacast? Это вернет 10.

ответ

0

int(dummy) возвращает 9 вместо 10, потому что это, по существу, на других языках floor(), и ваш ответ может стать 9, потому что для выполнения, по умолчанию, они рассматриваются как double.

Вы слышали о PrecisionEvaluate()https://cfdocs.org/precisionevaluate

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

вы получите 10, как ожидается,

Смежные вопросы