ความแม่นยำและสเกลแตกต่างกันอย่างไร


141

ความแม่นยำและความแตกต่างใน Oracle คืออะไร ในบทช่วยสอนพวกเขามักจะปล่อยให้สเกลว่างและตั้งค่าความแม่นยำเป็น 6 เมื่อสร้างคีย์หลัก

ความแม่นยำและขนาดย่อมาจากอะไร

คำตอบ:


203

ความแม่นยำ 4 ระดับ 2: 99.99

ความแม่นยำ 10 ระดับ 0: 9999999999

ความแม่นยำ 8 ระดับ 3: 99999.999

ความแม่นยำ 5 ระดับ -3: 99999000


15
คุณช่วยอธิบายพฤติกรรมของตาชั่งเชิงลบได้ไหม
Geek

2
ดูเหมือนว่าปัดเศษ / ไม่สนใจว่าค่าจำนวนเต็มจำนวนมากที่เหลืออยู่ของทศนิยม
JDPeckham

3
โปรดทราบว่าความแม่นยำจะรวมส่วนของสเกลเสมอ เช่น: Precision 4, scale 2 - จะล้มเหลวจำนวนใด ๆ > 99.9999 .. ; ลอง: เลือก cast (99.99999 เป็น NUMBER (4,2)) จาก dual; //ตกลง; เลือก cast (100.9 เป็น NUMBER (4,2)) จาก dual; //ล้มเหลว;
Jama Djafarov

@JamaDjafarov 99.99999 ล้มเหลวตามที่เห็นด้านล่าง: `21:53:54 CB900 @ XYZ> เลือกนักแสดง (99.99999 เป็น NUMBER (4,2)) จากคู่ เลือก cast (99.99999 เป็น NUMBER (4,2)) จาก dual * ERROR ที่บรรทัดที่ 1: ORA-01438: ค่าที่มากกว่าความแม่นยำที่ระบุที่อนุญาตสำหรับคอลัมน์นี้ 21:52:32 CB900 @ ASCEND1> เลือกรุ่นจาก v $ instance; รุ่น ------------------------------------------------- - 12.1.0.2.0 `
Phalgun

@Phalgun เลือกนักแสดง (99.9999 เป็น NUMBER (4,2)) จาก DUAL; เป็นตัวอย่างที่ไม่ดีเนื่องจากการตัดจะปัดเศษตัวเลขขึ้นจาก 99 เป็น 100 ซึ่งใหญ่เกินไปสำหรับ NUMBER (4,2) ลองเลือกนักแสดง (88.8888 เป็น NUMBER (4,2)) จาก DUAL; แทนที่จะเห็นคำตอบคือ 88.89
superbeck

58

ความแม่นยำคือจำนวนหลักที่มีนัยสำคัญ Oracle รับประกันความสามารถในการพกพาของตัวเลขด้วยความแม่นยำตั้งแต่ 1 ถึง 38

มาตราส่วนคือจำนวนตัวเลขทางด้านขวา (บวก) หรือซ้าย (ลบ) ของจุดทศนิยม สเกลสามารถอยู่ในช่วง -84 ถึง 127

ในกรณีของคุณ ID ที่มีความแม่นยำ 6 หมายความว่าจะไม่รับหมายเลขที่มี 7 หลักหรือมากกว่า

อ้างอิง:

http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

หน้านั้นยังมีตัวอย่างที่จะทำให้คุณเข้าใจความแม่นยำและมาตราส่วน


1
นั่นหมายความว่าคนสุดท้ายจะเป็น 1000000?
user700792

9
+1: ฉันคิดว่ากุญแจสำคัญในการทำความเข้าใจนี้คือการเข้าใจรูปแบบตัวเลขภายใน - mantissa และเลขยกกำลัง ความแม่นยำวางขีด จำกัด ตามความยาวที่เป็นไปได้ของแมนทิสซาและสเกลจะกำหนดขีด จำกัด ของเลขชี้กำลังขั้นต่ำที่เป็นไปได้
David Aldridge

@DavidAldridge ฉันก้องคุณ ฉันคิดว่าคุณควรพิจารณาการโพสต์มันเป็นคำตอบเกี่ยวกับแมนทิสซาและตัวแทน ตัวเลขจะถูกจัดเก็บจริงในรูปแบบความยาวผันแปร
Lalit Kumar B

55

ความแม่นยำคือจำนวนหลักทั้งหมดสามารถอยู่ระหว่าง 1 ถึง 38
มาตราส่วนคือจำนวนหลักหลังจุดทศนิยมอาจถูกกำหนดเป็นค่าลบสำหรับการปัดเศษ

ตัวอย่าง:
NUMBER (7,5): 12.12345
NUMBER (5,0): 12345

รายละเอียดเพิ่มเติมเกี่ยวกับเว็บไซต์ ORACLE:
https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832


และสเกลเป็นจำนวนตัวเลขทางด้านขวา (บวก) หรือซ้าย (ลบ) ของจุดทศนิยมไม่เพียงหลังจุดทศนิยม
Lalit Kumar B

ดูตัวอย่างของ koljaTM ความแม่นยำคือจำนวนตัวเลขที่สำคัญซึ่งอาจมีค่า (เช่นไม่ใช่แค่ "0" ในฐานะผู้ถือ) มาตราส่วนระบุว่าการตกเหล่านั้นเกี่ยวข้องกับจุดทศนิยมอย่างไร สเกลสามารถเป็นลบได้แสดงว่าอะไรที่แม่นยำเหนือ 0 ที่คุณไม่สนใจ NUMBER (1, -4): อนุญาตให้มีเพียง 10 ค่า: 00000, 10000, 20000 ... 90000
gordon

1
ความแม่นยำไม่ได้เป็นเพียงตัวเลขทั้งหมด ดังที่ David Aldridge อธิบายไว้ในความคิดเห็นของเขาที่มีต่อ manojlds มันคือ mantissa - จำนวนตัวเลขที่สำคัญที่คุณสนใจ มาตราส่วนความคิดของเลขชี้กำลังเป็นคำอธิบายที่แม่นยำยิ่งขึ้นแม้ว่าจะเป็นความลับ สเกลเชิงลบใด ๆ จะไม่มีตัวเลขหลังจุดทศนิยมและจะมี 0 จำนวนนั้นในฐานะผู้ถือตำแหน่งทางด้านซ้ายของจุดทศนิยม NUMBER (1, -4) จะมี 5 หลัก แต่เฉพาะอันดับแรกในตำแหน่ง 10,000 จะมีค่าที่คุณสนใจ
gordon

34

อาจชัดเจนมากขึ้น:

โปรดทราบว่าความแม่นยำคือจำนวนหลักรวมขนาดรวม

จำนวน (แม่นยำสูง, ชั่ง)

ความแม่นยำ 8 ระดับ 3: 87654.321

ความแม่นยำ 5 ระดับ 3: 54.321

ความแม่นยำ 5 ระดับ 1: 5432.1

ความแม่นยำ 5 ระดับ 0: 54321

ความแม่นยำ 5 ระดับ -1: 54320

ความแม่นยำ 5 ระดับ -3: 54000


19

มาตราส่วนคือจำนวนตัวเลขหลังจุดทศนิยม (หรือเครื่องหมายโคลอนขึ้นอยู่กับตำแหน่งที่ตั้งของคุณ)

ความแม่นยำคือจำนวนหลักทั้งหมด

ระดับ VS ความแม่นยำ


1

ความแม่นยำ: จำนวนทั้งหมดของตัวเลขก่อนหรือหลังจุดฐาน ตัวอย่าง: 123.456 ตรงนี้ความแม่นยำคือ 6

มาตราส่วน: คือจำนวนหลักทั้งหมดหลังจากจุดฐาน EX: 123.456 ที่นี่ Scaleis 3


-5

ถ้าค่าเป็น 9999.988 และความแม่นยำ 4, สเกล 2 หมายถึง 9999 (หมายถึงความแม่นยำ) 0.99 (สเกลคือ 2 ดังนั้น 0.88 จึงถูกปัดเศษเป็น. 99)

หากค่าเป็น 9999.9887 และความแม่นยำคือ 4 มาตราส่วนคือ 2 ก็หมายถึง 9999.99


7
ไม่ความแม่นยำคือจำนวนหลักที่สำคัญในการจัดเก็บ ในทั้งสองกรณีของคุณความแม่นยำที่เก็บไว้คือ 6 และสเกลคือ 2
David Aldridge
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.