Можно преобразовать числовое значение или
значение даты и времени в значение String
. Можно также преобразовать в обратном направлении из строкового значения в числовой или Boolean
Date
, если содержимое строки может быть интерпретировано как допустимое значение целевого типа данных. Если они не могут, возникает ошибка во время выполнения.
Преобразования для всех этих назначений в любом направлении сужают преобразования. Следует использовать ключевые слова преобразования типов (CBool
, CDate
CDec
CDbl
CLng
CSByte
CShort
CSng
CByte
CInt
, CStr
, CULng
CUInt
CUShort
и ).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"
является допустимым в языковом стандарте английского языка (США), но не в любом французском языковом стандарте.
В этом кратком руководстве мы покажем различные способы преобразования из строки
в целое число
в Groovy.
as
Первый метод, который мы можем использовать для преобразования, — это ключевое слово as
, которое аналогично вызову метода asType()
класса « :
@Test
void givenString_whenUsingAsInteger_thenConvertToInteger() {
def stringNum = "123"
Integer expectedInteger = 123
Integer integerNum = stringNum as IntegerassertEquals(integerNum, expectedInteger)
}
Как и выше, мы можем использовать int
:
@Test
void givenString_whenUsingAsInt_thenConvertToInt() {
def stringNum = "123"
int expectedInt = 123
int intNum = stringNum as intassertEquals(intNum, expectedInt)
}
целое число
Другой метод — из расширения Groovy JDK для java.lang.CharSequence
:
@Test
void givenString_whenUsingToInteger_thenConvertToInteger() {
def stringNum = "123"
int expectedInt = 123
int intNum = stringNum.toInteger()assertEquals(intNum, expectedInt)
}
Целое#parseInt
Третий способ — использовать статический метод Java Integer.parseInt()
:
@Test
void givenString_whenUsingParseInt_thenConvertToInteger() {
def stringNum = "123"
int expectedInt = 123
int intNum = Integer.parseInt(stringNum)assertEquals(intNum, expectedInt)
}
Целое#intValue
Альтернативный метод — создать новый объект Integer
и вызвать его метод intValue :
@Test
void givenString_whenUsingIntValue_thenConvertToInteger() {
def stringNum = "123"
int expectedInt = 123
int intNum = new Integer(stringNum). intValue()assertEquals(intNum, expectedInt)
}
Или, в этом случае, мы также можем использовать просто new Integer(stringNum)
:
@Test
void givenString_whenUsingNewInteger_thenConvertToInteger() {
def stringNum = "123"
int expectedInt = 123
int intNum = new Integer(stringNum)assertEquals(intNum, expectedInt)
}
Целое число#valueOf
Подобно Integer.parseInt()
, мы также можем использовать статический метод Java Integer#valueOf
:
@Test
void givenString_whenUsingValueOf_thenConvertToInteger() {
def stringNum = "123"
int expectedInt = 123
int intNum = Integer.valueOf(stringNum)assertEquals(intNum, expectedInt)
}
Десятичный формат
И для нашего последнего метода мы можем применить класс DecimalFormat
Java :
@Test
void givenString_whenUsingDecimalFormat_thenConvertToInteger() {
def stringNum = "123"
int expectedInt = 123
DecimalFormat decimalFormat = new DecimalFormat("#")
int intNum = decimalFormat. parse(stringNum).intValue()assertEquals(intNum, expectedInt)
}
Таким образом, если преобразование не удается, например, если есть нечисловые символы, будет выдано исключение NumberFormatException
. Кроме того, в случае, когда String
имеет значение null
, будет выброшено исключение NullPointerException :
@Test(expected = NumberFormatException.class)
void givenInvalidString_whenUsingAs_thenThrowNumberFormatException() {
def invalidString = "123a"
invalidString as Integer
}@Test(expected = NullPointerException.class)
void givenNullString_whenUsingToInteger_thenThrowNullPointerException() {
def invalidString = null
invalidString.toInteger()
}
Чтобы этого не произошло, мы можем использовать метод isInteger
:
@Test
void givenString_whenUsingIsInteger_thenCheckIfCorrectValue() {
def invalidString = "123a"
def validString = "123"
def invalidNum = invalidString?. isInteger() ? invalidString as Integer : false
def correctNum = validString?.isInteger() ? validString as Integer : falseassertEquals(false, invalidNum)
assertEquals(123, correctNum)
}
В этой короткой статье мы показали несколько эффективных способов переключения с объектов String
на объекты Integer
в Groovy.
Когда дело доходит до выбора наилучшего метода преобразования типа объекта, все вышеперечисленное одинаково хорошо. Самое главное — избежать ошибок, сначала проверив, может ли значение String
в нашем приложении быть нечисловым, пустым или нулевым
.
Как обычно, все примеры кода можно найти на GitHub .
В Python вы можете преобразовать строку str
в целое число int
и число с плавающей запятой float
с помощью int()
и float ()
.
Используйте str()
для преобразования целого числа или числа с плавающей запятой в строку.
Если вы хотите изменить формат строк или чисел, используйте функцию format()
или метод format()
str
.
Вы также можете преобразовать список строк в список чисел.
int
: int()
int()
int
.печать (целое число ('100')) печать (тип (целое ('100'))) № 100 # <класс 'целое'>
источник: str_num_conversion.py
Строка, содержащая .
или ,
вызывает ошибку.
# print(int('1.23')) # ValueError: неверный литерал для int() с основанием 10: '1.23' # print(int('10,000')) # ValueError: недействительный литерал для int() с основанием 10: '10,000'
источник: str_num_conversion.py
Чтобы преобразовать строку, разделенную запятыми, вы можете удалить запятые, заменив их пустой строкой ''
, используя replace()
.
print(int('10 000'.replace(',', ''))) # 10000
источник: str_num_conversion.py
Дополнительные сведения о replace()
см. в следующей статье.
float
: float()
float()
преобразует строку в число с плавающей запятой float
.
печать (с плавающей запятой ('1,23')) печать (тип (с плавающей запятой ('1.23'))) # 1.23 # <класс 'плавающий'>
источник: str_num_conversion.py
Строка без целой части также может быть преобразована.
печать (с плавающей запятой ('.23')) # 0,23
источник: str_num_conversion.py
Строка, представляющая целое число, также преобразуется в число с плавающей запятой float
.
печать (с плавающей запятой ('100')) печать (тип (с плавающей запятой ('100'))) # 100.0 # <класс 'плавающий'>
источник: str_num_conversion.py
int
Если вы передадите базовое число в качестве второго аргумента int()
, строка будет рассматриваться как двоичная, восьмеричная или шестнадцатеричная, в зависимости от базы.
печать (целое число ('100', 2)) печать (целое ('100', 8)) печать (целое ('100', 16)) № 4 № 64 № 256
источник: str_num_conversion. py
Если основание не указано, строка будет рассматриваться как десятичная, как показано в предыдущих примерах.
печать (целое число ('100', 10)) печать (целое ('100')) № 100 № 100
источник: str_num_conversion.py
Если база 0
, она преобразуется на основе префикса строки ( 0b
, 0o
, 0x
или 0B 900 04,
0O
, 0X
).
печать (целое число ('0b100', 0)) печать (целое ('0o100', 0)) печать (целое ('0x100', 0)) № 4 № 64 № 256
источник: str_num_conversion.py
Префиксы и шестнадцатеричные буквы могут быть написаны как в верхнем, так и в нижнем регистре.
печать (целое число ('FF', 16)) печать (целое ('ff', 16)) № 255 № 255 печать (целое ('0xFF', 0)) печать (целое ('0XFF', 0)) печать (целое ('0xff', 0)) печать (целое ('0Xff', 0)) № 255 № 255 № 255 № 255
источник: str_num_conversion.py
Дополнительные сведения о взаимном преобразовании двоичных, восьмеричных и шестнадцатеричных строк в int
см. в следующей статье.
float
Вы можете преобразовать строку в экспоненциальном представлении в
с помощью float()
.
печать (с плавающей запятой ('1.23e-4')) печать (тип (с плавающей запятой ('1.23e-4'))) # 0.000123 # <класс 'плавающий'> печать (с плавающей запятой ('1.23e4')) печать (тип (с плавающей запятой ('1.23e4'))) # 12300.0 # <класс 'плавающий'>
источник: str_num_conversion.py
Можно использовать как e
, так и E
.
печать (с плавающей запятой ('1.23E-4')) # 0.000123
источник: str_num_conversion.py
Вопрос: Как преобразовать строки в числа в JavaScript? Ответ: Чтобы преобразовать строку в число, используйте функции JavaScript parseFloat (для преобразования в число с плавающей запятой) или parseInt (для преобразования строки в целое число). parseFloat синтаксис: Как это работает: Примеры parseFloat('1,45 кг') // 1,45 parseFloat('77.3') // 77.3 parseFloat('077.3') // 77.3 parseFloat('0x77.3') // 0 parseFloat('.3') // 0,3 parseFloat('0.1e6') // 100000 parseInt синтаксис: Как это работает: Если имеется только один аргумент, числовая база определяется в соответствии с
общий синтаксис JavaScript для чисел. Строки, начинающиеся с Если строковый аргумент не может быть проанализирован как целое число,
результатом будет |