2017-02-15 12 views
7

Мы хотим сохранить 10-значный мобильный номер i.e9999999999. Должен ли он быть int или строковым типом данных? Мы не хотим делать какие-либо расчетные или манипуляционные операции на этомномер телефона должен быть строкой или целым числом?

Что лучше памяти и производительности?

+3

память + возможности = int. Но это небольшое увеличение производительности должно быть наименьшим из ваших забот. – Steve

+1

В общем, я использую 'int' только для чисел, где вам нужно делать какие-либо арифметические действия с ними, и использовать' string' для значений, где они в основном хранятся текст, который является числовым. – awh112

+2

Если ваш пользователь вводит номер, и вы не заботитесь о его правильности, то не ограничивайте себя хранением только чисел, но разрешите также другие символы. Строки – Steve

ответ

15

ITU-T recommendation E.164 говорит, что для кода страны требуется 3 цифры для кода страны и до 15 цифр для номера справочника в рамках тарифного плана страны.

И многие люди добавляют некоторые знаки препинания. Например:

+1.212.555.1212 - номер в Северной Америке. Также можно было бы сделать (212) 555-1212 в североамериканском ориентированном приложении.

32 символа текста должны делать трюк по всему миру.

НЕ используйте число, или вы пожалеете. Я был: две вещи.

  • Потерянный европейский бизнес для компании, потому что мы предположили, что все номера телефонов были NANP-compliant десятизначных номеров.
  • Экспорт электронных таблиц предоставил номера в научных обозначениях 2.12555E+09 Это почти так же глупо, как SIRI, рассказывающий мне у вас есть звонок от двух bllion, сто двадцать пять миллионов ....

Номера телефонных справочников не являются числовыми типами данных.

+0

Очень хороший ответ. Благодарю. – norbertpy

+0

Есть ли телефонные номера с буквами? Форматирование номера телефона определяется по местоположению, поэтому это хороший ответ, если вы собираете номер телефона, но не местоположение. – oMiKeY

+0

E.164 не рассматривает буквы, только цифры. и пунктуация. Но если вы используете текстовые строки для представления номеров каталогов, вам нечего мешать использовать буквы. Но дни каталогов, такие как 'CEntral 2- 1212', ушли навсегда. –

2

Это должно быть string, как номер телефона будет превышать предел int или даже long. Поэтому для обработки этого сценария всегда предпочитается string.