Какая функция преобразует число в строку
Перейти к содержимому

Какая функция преобразует число в строку

Преобразование значений между строковыми и другими типами (Visual Basic)

Можно преобразовать числовое значение, Boolean или значение даты и времени в String . Можно также преобразовать в обратном направлении — из строкового значения в числовое , или Date — при условии, Boolean что содержимое строки можно интерпретировать как допустимое значение целевого типа данных. Если они не могут, возникает ошибка во время выполнения.

Преобразования для всех этих назначений в любом направлении являются сужающими преобразованиями. Следует использовать ключевые слова преобразования типов ( CBool , , CByte , CDate , CDbl CDec , CInt , CSByte CLng , , CShort , , CSng , CStr , , , CUShort CUInt CULng и ). CType Функции Format и Val предоставляют дополнительный контроль над преобразованиями между строками и числами.

Если вы определили класс или структуру, можно определить операторы преобразования типов между String и типом класса или структуры. Дополнительные сведения см. в разделе How to: Define a Conversion Operator.

Преобразование чисел в строки

Функцию можно использовать для Format преобразования числа в форматированную строку, которая может включать не только соответствующие цифры, но и символы форматирования, такие как знак валюты (например $ , ), разделители тысяч или символы группирования цифр (например , , ), а также десятичный разделитель (например . , ). Format автоматически использует соответствующие символы в соответствии с параметрами региональных параметров, заданными в панель управления Windows.

Обратите внимание, что оператор объединения ( & ) может неявно преобразовать число в строку, как показано в следующем примере.

' The following statement converts count to a String value. Str = "The total count is " & count 

Преобразование строк в числа

Функцию можно использовать для Val явного преобразования цифр в строке в число. Val считывает строку, пока не встретит символ, отличный от цифры, пробела, табуляции, канала строки или точки. Последовательности «&O» и «&H» изменяют основание системы чисел и завершают сканирование. Пока чтение не прекратится, Val преобразует все соответствующие символы в числовое значение. Например, следующая инструкция возвращает значение 141.825 .

Val(» 14 1.825 miles»)

Когда Visual Basic преобразует строку в числовое значение, он использует параметры региональных параметров, указанные в Windows панель управления для интерпретации разделителя тысяч, десятичного разделителя и символа валюты. Это означает, что преобразование может завершиться успешно в одном параметре, но не в другом. Например, «$14.20» является допустимым в английском (США) языковом стандарте, но не в любом французском языковом стандарте.

См. также раздел

  • Преобразование типов в Visual Basic
  • Widening and Narrowing Conversions
  • Явные и неявные преобразования
  • Практическое руководство. Преобразование объекта к другому типу в Visual Basic
  • Преобразования массивов
  • Типы данных
  • Type Conversion Functions
  • Разработка глобализованных и локализованных приложений

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

The .NET documentation is open source. Provide feedback here.

Обратная связь

Отправить и просмотреть отзыв по

Какая функция преобразует число в строку

Нередко в программах встречается ситуация, когда надо преобразовать число в строку или строку в число. Для этой цели в стандартной библиотеке языка С определены функции strtol() и snprintf() .

Из строки в число. strtol

Функция strtol() преобразует строку в число типа long int . Функция определена в заголовочном файле stdlib.h и имеет следующий прототип:

long strtol(const char *restrict str, char **restrict str_end, int base);
  • str — строка с числом, которое надо преобразовать в числовой тип. Ключевое слово restrict указывает компилятору оптимизировать код и что никакой другой параметр не будет указывать на адрес данного параметра.
  • str_end — указатель на последний символ строки. Данный параметр можно игнорировать, передавая ему значение NULL
  • base — основание, система исчисления, в которую надо преобразовать данные (значение от 2 до 36).

Результатом функции является преобразованное число типа long .

Например, преобразуем строку в число в десятичной системе:

#include #include int main(void) < const char * str = "24 flowers"; long result = strtol(str, NULL, 10); printf("Result: %ld\n", result); // Result: 24 return 0; >

В примере выше второй параметр функции никак не использовался — мы ему передавали значение NULL , и функция нормально работала. Однако он может быть полезен, если нам надо получить остаток строки, которая идет после числа:

#include #include int main(void) < const char * str = "24 flowers"; char* str_end; long result = strtol(str, &str_end, 10); printf("Result: %ld\n", result); // Result: 24 printf("Rest of the string:%s\n", str_end); // Rest of the string: flowers return 0; >

Из числа в строку. snprintf

Функция snprintf() преобразует число в отформатированную строку. Функция определена в заголовочном файле stdio.h и имеет следующий прототип:

int snprintf(char *restrict str_buffer, size_t buffer_size, const char *restrict format, . );
  • str_buffer — строка, в которую помещается преобразованное число.
  • buffer_size — максимальное количество символов строки. Функция записывает в строку buffer-size — 1 байт и добавляет концевой нулевой байт
  • format — задает формат преобразования в строку.

При успешном преобразовании функция возвращает количество символов, записанных в строку (исключая концевой нулевой байт). При неудачном преобразовании возвращается отрицательное число.

#include int main(void) < int number = 354; char str [10]; snprintf(str, sizeof str, "%d", number); printf("Result: %s\n", str); // Result: 354 return 0; >

При этом строка форматирования может содержать множество параметров:

#include int main(void) < int count = 3; double price = 79.99; char str [50]; snprintf(str, sizeof str, "Count: %d \tPrice: %.2f", count, price); printf("%s\n", str); // Count: 3 Price: 79.99 return 0; >

Функции преобразования строк в числовые значения

Каждая функция в семействе strto* преобразует строку, завершаемую null, в числовое значение. Доступные функции перечислены в следующей таблице.

Function Description
strtod Преобразует строку в значение двойной точности с плавающей запятой
strtol Преобразуют строку в целое число типа long
strtoul Преобразуют строку в целое число без знака типа unsigned long
_strtoi64 Преобразует строку в 64-разрядное целое число типа __int64
_strtoui64 Преобразует строку в беззнаковое 64-разрядное целое число типа __int64

wcstod , wcstol , wcstoul и _wcstoi64 — это версии с расширенными символами функций strtod , strtol , strtoul и _strtoi64 соответственно. Строковый аргумент каждой из этих функций для расширенных символов представляет собой строку расширенных символов; каждая функция ведет себя так же, как и эквивалентная функция для однобайтовых символов.

Функция strtod принимает два аргумента: первая — входная строка, а второй — указатель на символ, который заканчивает процесс преобразования. strtol , strtoul _strtoi64 и _strtoui64 принимает третий аргумент в качестве базы чисел для использования в процессе преобразования.

Входная строка представляет собой последовательность символов, которые могут обрабатываться как числовое значение указанного типа. Каждая функция перестает читать строку на первом символе, которую она не может распознать как часть числа. Этот символ может быть завершающим символом NULL. Для strtol , strtoul , _strtoi64 и _strtoui64 этот конечный символ также может быть первым числовым символом, который больше определенного пользователем основания системы счисления или равен ему.

Если предоставленный пользователем указатель на символ завершения преобразования не задан NULL или nullptr во время вызова, указатель на символ, остановивший сканирование, будет сохранен там. Если выполнить преобразование невозможно (не найдены допустимые цифры или указано недопустимое основание), по этому адресу сохраняется значение указателя на строку.

strtod ожидает строку следующего вида:

Может whitespace состоять из пробелов или символов табуляции, которые игнорируются; sign либо плюс ( + ), либо минус ( ); и digits являются одним или несколькими десятичными цифрами. Если перед символом основания системы счисления нет никаких цифр, то после него должна отображаться хотя бы одна цифра. За десятичными цифрами может следовать показатель степени, который состоит из вводной буквы ( d , D , e или E ) и при необходимости целого числа со знаком. Если экспонентная часть или радикс не отображается, предполагается, что символ радикса следует за последней цифрой в строке. Первый символ, который не соответствует этой форме, останавливает сканирование.

Функции strtol , strtoul , _strtoi64 и _strtoui64 ожидают строку следующего вида:

Если базовый аргумент составляет от 2 до 36, он используется в качестве основы числа. Если это значение 0, для определения базы используются начальные символы, на которые ссылается указатель завершения преобразования. Если первый символ равен 0, а второй символ не является x или X, строка интерпретируется как восьмеричное целое число; в противном случае он интерпретируется как десятичное число. Если первый символ — 0, а второй символ равен x или X, строка интерпретируется как шестнадцатеричное целое число. Если первый символ — от 1 до 9, строка интерпретируется как десятичное целое число. Буквам от а до z (или от А до Z) присваиваются значения от 10 до 35. Допускаются только буквы с присвоенными значениями меньше base . strtoul и _strtoui64 допускают в качестве префикса знак плюса ( + ) или знак минуса ( ); знак минуса перед числом показывает, что возвращаемое значение отрицательное.

Выходное значение зависит от параметра LC_NUMERIC категории языкового стандарта. Дополнительные сведения см. в разделе setlocale . Версии этих функций без суффикса _l используют текущий языковой стандарт для данного поведения, зависимого от языкового стандарта. Версии с суффиксом _l идентичны, однако они используют переданный параметр языкового стандарта.

Если значение, возвращаемое этими функциями, приведет к переполнению или переполнению или, когда преобразование невозможно, возвращаются специальные значения регистра, как показано ниже.

Функция Condition Возвращенное значение
strtod Overflow +/- HUGE_VAL
strtod Потеря точности или отсутствие преобразования 0
strtol Переполнение + LONG_MAX
strtol Переполнение – LONG_MIN
strtol Потеря точности или отсутствие преобразования 0
_strtoi64 Переполнение + _I64_MAX
_strtoi64 Переполнение – _I64_MIN
_strtoi64 Преобразование не выполнено 0
_strtoui64 Overflow _UI64_MAX
_strtoui64 Преобразование не выполнено 0

_I64_MAX , _I64_MIN и _UI64_MAX определены в .

Функции wcstod , wcstol , wcstoul , _wcstoi64 и _wcstoui64 — это, соответственно, версии функций strtod , strtol , strtoul , _strtoi64 и _strtoui64 для расширенных символов; указатель на аргумент конца преобразования в каждой из этих функций для расширенных символов представляет собой строку расширенных символов. В остальном каждая из этих функций для расширенных символов работает так же, как и ее аналог для однобайтовых символов.

Преобразование типов

Чаще всего операторы и функции автоматически приводят переданные им значения к нужному типу.

Например, alert автоматически преобразует любое значение к строке. Математические операторы преобразуют значения к числам.

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

Пока что мы не говорим об объектах

В этой главе мы не касаемся объектов. Сначала мы разберём преобразование примитивных значений.

Мы разберём преобразование объектов позже, в главе Преобразование объектов в примитивы.

Строковое преобразование

Строковое преобразование происходит, когда требуется представление чего-либо в виде строки.

Например, alert(value) преобразует значение к строке.

Также мы можем использовать функцию String(value) , чтобы преобразовать значение к строке:

let value = true; alert(typeof value); // boolean value = String(value); // теперь value это строка "true" alert(typeof value); // string

Преобразование происходит очевидным образом. false становится «false» , null становится «null» и т.п.

Численное преобразование

Численное преобразование происходит в математических функциях и выражениях.

Например, когда операция деления / применяется не к числу:

alert( "6" / "2" ); // 3, строки преобразуются в числа

Мы можем использовать функцию Number(value) , чтобы явно преобразовать value к числу:

let str = "123"; alert(typeof str); // string let num = Number(str); // становится числом 123 alert(typeof num); // number

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

Если строка не может быть явно приведена к числу, то результатом преобразования будет NaN . Например:

let age = Number("Любая строка вместо числа"); alert(age); // NaN, преобразование не удалось

Правила численного преобразования:

Значение Преобразуется в…
undefined NaN
null 0
true / false 1 / 0
string Пробельные символы (пробелы, знаки табуляции \t , знаки новой строки \n и т. п.) по краям обрезаются. Далее, если остаётся пустая строка, то получаем 0 , иначе из непустой строки «считывается» число. При ошибке результат NaN .
alert( Number(" 123 ") ); // 123 alert( Number("123z") ); // NaN (ошибка чтения числа на месте символа "z") alert( Number(true) ); // 1 alert( Number(false) ); // 0

Учтите, что null и undefined ведут себя по-разному. Так, null становится нулём, тогда как undefined приводится к NaN .

Большинство математических операторов также производит данное преобразование, как мы увидим в следующей главе.

Логическое преобразование

Логическое преобразование самое простое.

Происходит в логических операциях (позже мы познакомимся с условными проверками и подобными конструкциями), но также может быть выполнено явно с помощью функции Boolean(value) .

  • Значения, которые интуитивно «пустые», вроде 0 , пустой строки, null , undefined и NaN , становятся false .
  • Все остальные значения становятся true .
alert( Boolean(1) ); // true alert( Boolean(0) ); // false alert( Boolean("Привет!") ); // true alert( Boolean("") ); // false

Заметим, что строка с нулём «0» — это true

Некоторые языки (к примеру, PHP) воспринимают строку «0» как false . Но в JavaScript, если строка не пустая, то она всегда true .

alert( Boolean("0") ); // true alert( Boolean(" ") ); // пробел это тоже true (любая непустая строка это true)

Итого

Существует 3 наиболее широко используемых преобразования: строковое, численное и логическое.

Строковое – Происходит, когда нам нужно что-то вывести. Может быть вызвано с помощью String(value) . Для примитивных значений работает очевидным образом.

Численное – Происходит в математических операциях. Может быть вызвано с помощью Number(value) .

Преобразование подчиняется правилам:

Значение Становится…
undefined NaN
null 0
true / false 1 / 0
string Пробельные символы по краям обрезаются. Далее, если остаётся пустая строка, то получаем 0 , иначе из непустой строки «считывается» число. При ошибке результат NaN .

Логическое – Происходит в логических операциях. Может быть вызвано с помощью Boolean(value) .

Значение Становится…
0 , null , undefined , NaN , «» false
любое другое значение true

Большую часть из этих правил легко понять и запомнить. Особые случаи, в которых часто допускаются ошибки:

  • undefined при численном преобразовании становится NaN , не 0 .
  • «0» и строки из одних пробелов типа » » при логическом преобразовании всегда true .

В этой главе мы не говорили об объектах. Мы вернёмся к ним позже, в главе Преобразование объектов в примитивы, посвящённой только объектам, сразу после того, как узнаем больше про основы JavaScript.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *