Функции "Десятичное число", "Число с плавающей точкой" и "Значение"

Применимо к: приложениям на основе холста столбцам формул Dataverse классическим потокам приложениям на основе модели интерфейсу командной строки Power Platform

Преобразует строку текста или других типов в число.

Description

Заметка

Power Apps поддерживает только функцию Значение и возвращает значение Число с плавающей точкой. Поддержка функций Десятичное число и Число с плавающей точкой будет добавлена в ближайшее время.

Используйте функции Десятичное число, Число с плавающей точкой и Значение для преобразования текстовую строку, содержащую цифры, в числовое значение. Эти функции используется, когда требуется выполнять вычисления с числами, введенными пользователем в виде текста. Эти функции также можно использовать для преобразования других типов в числа, например даты/времени и логического значения.

Функция Значение вернет числовой тип данных по умолчанию для узла Power Fx, который вы используете, обычно это Десятичное число и лучший выбор для большинства ситуаций. Используйте функции Десятичное число и Число с плавающей точкой, когда вам нужен определенный тип данных для определенного сценария, например научный расчет с очень большим числом. Дополнительные сведения о работе с этими типами данных см. в разделе "Числа" в типах данных.

Разные языки по-разному интерпретируют знаки , и .. По умолчанию текст интерпретируется на языке текущего пользователя. Можно указать используемый язык с помощью тега языка, значение которого можно получить вызовом функции Language.

Примечания к формату строки:

  • Строка может начинаться с символа валюты для текущего языка. Такой символ валюты игнорируется. Символы валют для других языков не игнорируются.
  • Строка может содержать знак процента (%) в конце, который означает, что значение указано в процентах. В этом случае перед возвращением число будет разделено на 100. Проценты и символы валют сочетать невозможно.
  • Строка может быть записана в экспоненциальном формате, когда 12 x 103 выражается как "12e3".

Если число имеет неправильный формат, эти функции вернут ошибку.

Для преобразования значений даты и времени используйте функции DateValue, TimeValue или DateTimeValue.

Синтаксис

Decimal( String [, LanguageTag ] )
Float( String [, LanguageTag ] )
Value( String [, LanguageTag ] )

  • String — обязательный аргумент. Строка для преобразования в числовое значение.
  • LanguageTag — необязательный аргумент. Тег языка, для которого будет проводиться анализ строки. Если тег не указан, используется язык текущего пользователя.

Decimal( Untyped )
Float( Untyped )
Значение( Нетипизированный )

  • Нетипизированный — обязательный аргумент. Нетипизированный объект, который представляет число. Допустимые значения зависят от нетипизированного поставщика. В случае JSON ожидается, что нетипизированный объект будет числом, логическим значением или текстом JSON, которые можно преобразовать в число. Имейте в виду, что форматы, связанные с языковым стандартом, являются важными факторами при обмене данными с внешними системами.

Примеры

Пользователь, выполняющий эти формулы, находится в США и использует английский язык. Функция Language возвращает значение "en-US". Узлы Power Fx по умолчанию используют тип данных Десятичное число.

Значение и десятичное число

Поскольку мы используем узел, который по умолчанию имеет значение Десятичное число, Значение и Десятичное число вернет те же результаты.

Формула Description Result
Value( "123.456" )
Decimal( "123.456" )
По умолчанию будет использоваться язык "en-US", в котором десятичный разделитель — точка. 123.456 (Decimal)
Value( "123.456", "es-ES" )
Decimal( "123.456", "es-ES" )
"es-ES" — тег для испанского языка в Испании. В Испании точка используется для отделения тысяч. 123456 (Decimal)
Value( "123,456" )
Decimal( "123,456" )
По умолчанию будет использоваться язык "en-US", в котором разделитель тысяч — запятая. 123456 (Decimal)
Value( "123.456", "es-ES" )
Decimal( "123,456", "es-ES" )
"es-ES" — тег для испанского языка в Испании. В Испании десятичным разделителем является запятая. 123.456 (Decimal)
Value( "12.34%" )
Decimal( "12.34%" )
Знак процента в конце строки указывает, что это значение в процентах. 0.1234 (Decimal)
Value( "$ 12.34" )
Decimal( "$ 12.34" )
Символ валюты для текущего языка не учитывается. 12.34 (Decimal)
Value( "24e3" )
Decimal( "24e3" )
Экспоненциальное представление числа 24 x 103. 24000 (Decimal)
Value( true )
Decimal( true )
Преобразует логическое значение в число: 0 для false и 1 для true 1 Decimal

Акции в свободном обращении

Функция Число с плавающей точкой будет иметь очень близкие к вышеуказанным результаты. Поскольку 123.456 не может быть точно представлено в Число с плавающей точкой, результатом является очень близкое приближение (123.456000000000003069544618484E2), а вычисления ошибок округления могут привести к неожиданному результату. Вместо этого результирующий тип будет Число с плавающей точкой.

Ситуация расходится, если используются большие или меньшие числа.

Формула Description Result
Float( 1e100 ) Поскольку числовой литерал 1e100 выходит за пределы диапазона Десятичное число, это приводит к ошибке еще до вызова функция Число с плавающей точкой. ошибка (переполнение)
Decimal( 1e100 ) Та же проблема, что и с функцией Число с плавающей точкой. ошибка (переполнение)
Float( "1e100" ) Число в текстовой строке находится в диапазоне чисел Число с плавающей точкой. 1e100 Float
Decimal( "1e100" ) Число в текстовой строке находится вне диапазона чисел Десятичное число. ошибка (переполнение)
Float( "10000000000.0000000001" ) Число в текстовой строке находится в диапазоне чисел Число с плавающей точкой. Однако это число требует большей точности, чем может обеспечить Число с плавающей точкой, и будет усечено. 1 (Float)
Decimal( "10000000000.0000000001" ) Число в текстовой строке находится имеет диапазон и точность чисел Десятичное число. 10000000000.0000000001 (Decimal)