Decimal、Float 和 Value 函式

適用於: 畫布應用程式 Dataverse 公式欄 桌面流程 模型導向應用程式 Power Platform CLI

將文字字串或其他類型轉換為數字。

Description

注意

Power Apps 僅支援 Value 函式,它會傳回浮點數值。 很快就會加入對 DecimalFloat 函式的支援。

使用 DecimalFloatValue 函式將包含數字字元的文字字串轉換為數值。 當您需要對使用者以文字形式輸入的數字計算時,請使用這些函式。 這些函式也可用於將其他類型轉換為數字,例如日期/時間和布林值。

Value 函式將傳回您正在使用的 Power Fx 主機的預設數字資料類型,通常是十進位,這在是大多數情況下的最佳選擇。 當您需要針對特定情境 (例如具有非常大數字的科學計算) 的特定資料類型時,請使用 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 主控件預設使用十進位

值和小數值

由於我們使用的主機預設為十進位十進位將會傳回相同的結果。

公式 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

自由流通股

Float 函式的結果與上面的結果非常接近。 由於 123.456 無法以 Float 精確表示,因此結果是非常接近的近似值 (123.456000000000003069544618484E2),複合捨入誤差計算可能會導致意外結果。 結果類型將為 Float

不同之處在於使用更大或更小的數字。

公式 Description Result
Float( 1e100 ) 由於常值數字 1e100 超出了 Decimal 的範圍,因此在呼叫 Float 函式之前會導致錯誤。 error (overflow)
Decimal( 1e100 ) Float 函式相同的問題。 error (overflow)
Float( "1e100" ) 文字字串中的數字在 Float 數字範圍內。 1e100 Float
Decimal( "1e100" ) 文字字串中的數字在超出了 Decimal 數字的範圍。 error (overflow)
Float( "10000000000.0000000001" ) 文字字串中的數字在 Float 數字範圍內。 但是,該數字所需的精確度超出了 Float 所能提供的精確度,其將會被截斷。 1 (Float)
Decimal( "10000000000.0000000001" ) 文字字串中的數字在 Decimal 數字的範圍和精確度內。 10000000000.0000000001 (Decimal)