ฟังก์ชัน Decimal, Float และ Value
ใช้กับ: แอปพื้นที่ทำงาน
คอลัมน์สูตร Dataverse
โฟลว์เดสก์ท็อป
แอปแบบจำลอง
Power Platform CLI
แปลงสตริงข้อความหรือชนิดอื่นๆ ให้เป็นตัวเลข
คำอธิบาย
หมายเหตุ
Power Apps รองรับเฉพาะฟังก์ชัน Value และส่งคืนค่า Float เราจะเพิ่มการรองรับฟังก์ชัน Decimal และ Float ในเร็วๆ นี้
ใช้ฟังก์ชัน Decimal, Float และ Value เพื่อแปลงสตริงของข้อความที่ประกอบด้วยอักขระตัวเลขให้เป็นค่าตัวเลข ใช้ฟังก์ชันเหล่านี้ เมื่อคุณจำเป็นต้องคำนวณตัวเลขที่ป้อนเข้าไปเป็นข้อความโดยผู้ใช้ ฟังก์ชันเหล่านี้ยังสามารถใช้เพื่อแปลงชนิดอื่นๆ ให้เป็นตัวเลข เช่น วันที่/เวลา และแบบบูลีน
ฟังก์ชัน Value จะส่งกลับชนิดข้อมูลตัวเลขเริ่มต้นสำหรับโฮสต์ Power Fx ที่คุณใช้ ซึ่งโดยปกติจะเป็น Decimal และตัวเลือกที่ดีที่สุดสำหรับสถานการณ์ส่วนใหญ่ ใช้ฟังก์ชัน Decimal และ Float เมื่อคุณต้องการชนิดข้อมูลเฉพาะสำหรับสถานการณ์เฉพาะ เช่น ข้อมูลทางวิทยาศาสตร์ การคำนวณด้วยจำนวนที่มาก สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการทำงานกับชนิดข้อมูลเหล่านี้ โปรดดู ส่วนตัวเลขของชนิดข้อมูล
ภาษาที่ต่างกันแปล , และ . แตกต่างกันไป โดยค่าเริ่มต้น ข้อความจะถูกแปลเป็นภาษาของผู้ใช้ปัจจุบัน คุณสามารถระบุภาษาที่ใช้ด้วยแท็กภาษา ซึ่งใช้แท็กภาษาเดียวกับที่ส่งกลับโดยฟังก์ชัน Language
โปรดสังเกตรูปแบบของสตริง:
- สตริงอาจขึ้นต้นด้วยสัญลักษณ์สกุลเงินสำหรับภาษาปัจจุบัน สัญลักษณ์สกุลเงินถูกละเว้น สัญลักษณ์สกุลเงินสำหรับภาษาอื่นๆ จะไม่ถูกละเว้น
- สตริงอาจรวมถึงเครื่องหมายเปอร์เซ็นต์ (%) ที่ส่วนท้าย ซึ่งระบุว่าเป็นเปอร์เซ็นต์ ตัวเลขจะถูกหารด้วย 100 ก่อนการส่งกลับ เปอร์เซ็นต์และสัญลักษณ์สกุลเงินไม่สามารถผสมกันได้
- สตริงอาจอยู่ในรูปเครื่องหมายทางวิทยาศาสตร์ โดยที่ 12 x 103 เขียนเป็น "12e3" ได้
หากตัวเลขไม่อยู่ในรูปแบบที่เหมาะสม ฟังก์ชันเหล่านี้จะส่งกลับข้อผิดพลาด
เมื่อต้องการแปลงค่าวันที่และเวลา ใช้ฟังก์ชัน DateValueTimeValue หรือ DateTimeValue
ไวยากรณ์
Decimal( String [, LanguageTag ] )
Float( String [, LanguageTag ] )
Value( String [, LanguageTag ] )
- สตริง - จำเป็น สตริงที่จะแปลงให้เป็นค่าตัวเลข
- LanguageTag - เลือกได้ แท็กภาษาที่ใช้แยกวิเคราะห์สตริง ถ้าไม่ระบุ จะใช้ภาษาของผู้ใช้ปัจจุบัน
Decimal( Untyped )
Float( Untyped )
Value( Untyped )
- Untyped - จำเป็น ออบเจ็กต์ไม่ระบุชนิด ที่แสดงถึงตัวเลข ค่าที่ยอมรับได้ขึ้นอยู่กับตัวให้บริการไม่ระบุชนิด สำหรับ JSON ออบเจ็กต์ที่ไม่ได้ระบุชนิดคาดว่าจะเป็นตัวเลข JSON, บูลีน หรือข้อความที่สามารถแปลงเป็นตัวเลขได้ โปรดทราบว่ารูปแบบที่เกี่ยวข้องกับที่ตั้งเป็นข้อพิจารณาที่สำคัญเมื่อสื่อสารกับระบบภายนอก
ตัวอย่าง
ผู้ใช้ที่เรียกใช้สูตรเหล่านี้อยู่ในสหรัฐอเมริกา และเลือกภาษาอังกฤษเป็นภาษาของพวกเขา ฟังก์ชัน Language จะส่งกลับ "en-US" โฮสต์ Power Fx ใช้ Decimal ตามค่าเริ่มต้น
Value และ Decimal
เนื่องจากเราใช้โฮสต์ที่มี Decimal เป็นค่าเริ่มต้น Value และ Decimal จะส่งกลับผลลัพธ์เดียวกัน
สูตร | 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
ฟังก์ชัน 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) |