十进制、浮点和值函数

适用于:画布应用 Dataverse 公式列桌面流模型驱动应用 Power Platform CLI

将文本或其他类型的字符串转换为数字。

描述

备注

Power Apps 仅支持 Value 函数,并返回 Float 值。 对 DecimalFloat 函数的支持将很快添加。

使用 DecimalFloatValue 函数将包含数字字符的文本字符串转换为数字值。 需要对用户以文本形式输入的数字执行计算时,请使用这些函数。 这些函数也可用于将其他类型转换为数字,如日期/时间和布尔值。

Value 函数将返回您正在使用的 Power Fx 主机的默认数字数据类型,通常为 Decimal,这是大多数情况下的最佳选择。 当您在特定情况下需要特定的数据类型时,可以使用 DecimalFloat 函数,例如具有很大数值的科学计算。 有关使用这些数据类型的更多详细信息,请参阅数据类型的数字部分

不同的语言对 ,. 的解释各不相同。 默认情况下,文本使用当前用户的语言进行解释。 可以通过语言标记指定要使用的语言,使用的语言标记与 Language 函数返回的语言标记相同。

字符串格式的说明:

  • 字符串可能以当前语言所对应的货币符号为前缀。 系统会忽略该货币符号, 但不忽略其他语言的货币符号。
  • 字符串可能在末尾包含百分号 (%),表示这是百分比。 该数字在返回前将被除以 100。 不能混用百分比和货币符号。
  • 字符串可能采用科学记数法,将 12 x 103 表示为“12e3”。

如果数字格式不正确,这些函数将返回错误。

若要转换日期和时间值,请使用 DateValueTimeValueDateTimeValue 函数。

语法

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

  • String - 必需。 要转换为数字值的字符串。
  • LanguageTag - 可选。 一种语言标记,可以通过该标记来分析语言。 在未指定该标记的情况下,将使用当前用户的语言。

Decimal( Untyped )
Float( Untyped )
Value( Untyped )

  • Untyped - 必需。 表示数字的非类型化对象。 可接受值取决于非类型化提供程序。 对于 JSON,非类型化对象应该是可转换为数字的 JSON 数字、布尔值或文本。 请记住,在与外部系统通信时,与区域设置相关的格式是重要的注意事项。

示例

运行这些公式的用户位于美国,且已选择英语作为其语言。 Language 函数返回的是“en-US”。 默认情况下,Power Fx 主机使用 Decimal

值和十进制

由于我们使用的主机将十进制作为默认值,十进制将返回相同的结果。

公式 描述 结果
Value( "123.456" )
十进制( "123.456" )
将使用默认语言“en-US”,该语言使用句点作为小数分隔符。 123.456(十进制
Value( "123.456", "es-ES" )
十进制( "123.456", "es-ES" )
“es-ES”是在西班牙使用的西班牙语的语言标记。 在西班牙,句点为千位分隔符。 123456(十进制
Value( "123,456" )
十进制( "123,456" )
将使用默认语言“en-US”,该语言使用逗号作为千位分隔符。 123456(十进制
Value( "123.456", "es-ES" )
十进制( "123,456", "es-ES" )
“es-ES”是在西班牙使用的西班牙语的语言标记。 在西班牙,逗号是小数分隔符。 123.456(十进制
Value( "12.34%" )
十进制( "12.34%" )
字符串末尾的百分号表示这是一个百分比。 0.1234(十进制
Value( "$ 12.34" )
十进制( "$ 12.34" )
系统会忽略当前语言的货币符号。 12.34(十进制
Value( "24e3" )
十进制( "24e3" )
24 x 103 所对应的科学记数法。 24000(十进制
值( true )
十进制( true )
将布尔值转换为数字,0表示 false,1表示 true 1 十进制

流通股

Float 函数的结果与上述结果非常接近。 由于 123.456 无法用 Float 精确表示,因此结果是非常接近的近似值 (123.45600000000003069544618484 E2),复合舍入误差计算可能会导致意外结果。 结果类型将改为 Float

不同之处在于使用的数字是大还是小。

公式 描述 结果
浮点( 1e100 ) 因为文字数字 1e100 超出了十进制数的范围,所以在调用Float函数之前会出现错误。 错误(溢出)
十进制( 1e100 ) Float 函数的问题相同。 错误(溢出)
浮点( "1e100" ) 文本字符串中的数字在浮点数字的范围内。 1e100 浮点
十进制( "1e100" ) 文本字符串中的数字超出了十进制数字的范围。 错误(溢出)
浮点( "10000000000.0000000001" ) 文本字符串中的数字在浮点数字的范围内。 但是,该数字需要的精度超过了浮点所能提供的精度,因此将被截断。 1(浮点
十进制( "10000000000.0000000001" ) 文本字符串中的数字在十进制数字的范围和精度内。 10000000000.0000000001(十进制