จากเอกสารออนไลน์ :
POWER ( float_expression , y )
ข้อโต้แย้ง
float_expression คือการแสดงออกของประเภทลอยหรือประเภทที่สามารถแปลงโดยปริยายไปลอย
ความหมายก็คือสิ่งที่คุณผ่านเป็นพารามิเตอร์แรกจะถูกโยนไปโดยปริยายfloat(53)
ก่อนที่จะมีการดำเนินการฟังก์ชั่น อย่างไรก็ตามนี่ไม่ใช่ (เสมอ?) กรณีนี้
หากเป็นกรณีนี้มันจะอธิบายการสูญเสียความแม่นยำ:
การแปลงค่าทศนิยมที่ใช้เครื่องหมายทางวิทยาศาสตร์เป็นทศนิยมหรือตัวเลขจะถูก จำกัด เฉพาะค่าความแม่นยำ 17 หลักเท่านั้น ค่าใด ๆ ที่มีความแม่นยำสูงกว่า 17 รอบถึงศูนย์
ในทางตรงกันข้ามตัวอักษร2.
เป็นประเภทnumeric
... :
DECLARE @foo sql_variant;
SELECT @foo = 2.;
SELECT SQL_VARIANT_PROPERTY(@foo, 'BaseType');
GO
| (ไม่มีชื่อคอลัมน์)
| : --------------- |
| ตัวเลข |
dbfiddle ที่นี่
... และผู้ประกอบการคูณกลับชนิดข้อมูลของการโต้แย้งที่มีลำดับความสำคัญสูง
ดูเหมือนว่าในปี 2559 (SP1) ความแม่นยำทั้งหมดจะยังคงอยู่:
SELECT @@version;
GO
| (ไม่มีชื่อคอลัมน์)
| : ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------- |
| Microsoft SQL Server 2016 (SP1) (KB3182545) - 13.0.4001.0 (X64) <br> 28 ตุลาคม 2559 18:17:30 น. - ลิขสิทธิ์ (c) Microsoft Corporation รุ่น Express (64 บิต) บน Windows Server 2012 R2 มาตรฐาน 6.3 <X64> (รุ่น 9600:) (Hypervisor) <br> |
SELECT POWER(2.,64.);
GO
| (ไม่มีชื่อคอลัมน์)
| : ------------------- |
| 18446744073709551616 |
dbfiddle ที่นี่
… แต่ในปี 2014 (SP2) พวกเขาไม่ใช่:
SELECT @@version;
GO
| (ไม่มีชื่อคอลัมน์)
| : ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------------------------ |
| Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64) <br> 17 มิถุนายน 2016 19:14:09 - ลิขสิทธิ์ (c) Microsoft Corporation รุ่น Express (64 บิต) บน Windows NT 6.3 <X64> (รุ่น 9600:) (Hypervisor) <br> |
SELECT POWER(2.,64.);
GO
| (ไม่มีชื่อคอลัมน์)
| : ------------------- |
| 18446744073709552000 |
dbfiddle ที่นี่