2010-07-08 4 views
3

У меня есть следующий код:Что делает int (x) действительно?

<cfloop list="1|1.2|1,2|1,2,3" delimiters="|" index="x"> 
    #X# - #int(x)# <br /> 
</cfloop> 

Который производит этот выход:

1 - 1 
1.2 - 1 
1,2 - 40180 
1,2,3 - 37623 

Что происходит, когда я прохожу в этих списках?

ответ

5

INT() Поведение не определено, если вы передадите ему то, что не является числом.

Вы можете проверить, является ли строка числовой с помощью функции isNumeric().

Если вам нужно извлечь номер из произвольной строки, используйте parseInt().

3

Лучше объясните, какие результаты ожидаются. Возможно, вам понадобится int(val(x)) в качестве обходного пути.

Рассмотрим пример цикла, чтобы увидеть различия между функциями, которые можно использовать:

<cfloop list="1|1.2|1,2|1,2,3" delimiters="|" index="x"> 
    #x# - #val(x)# - #int(val(x))# - #fix(val(x))# - #isNumeric(x)# - #isValid("integer", x)#<br /> 
</cfloop> 

BTW, Railo делает это умнее: он бросает Exeption когда строка не может быть надежно преобразован (итерации 3 и 4).

+0

Я на самом деле не ожидал какого-либо конкретного результата, я просто случайно повел себя на поведение и пытался определить, как генерируется вывод. – Anthony

+0

Угадайте, что это была какая-то странная реализация, перенесенная из старой версии CF ... – Henry

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