เอกสารประกอบ MySQL พูด :
ประเภท DECIMAL และ NUMERIC จะเก็บค่าข้อมูลตัวเลขที่แน่นอน ประเภทเหล่านี้จะใช้เมื่อจำเป็นต้องรักษาความแม่นยำที่แน่นอน เช่น กับข้อมูลทางการเงิน
ฉันทำการทดสอบนี้ในคอลัมน์นั้น decimal_column DECIMAL(31,30)
insert into tests (decimal_column) values(1/3);
จากนั้นตรวจสอบสิ่งที่เก็บไว้ก็จะได้สิ่งนี้
select * from tests ;
> result : 0.333333333000000000000000000000
จากนั้นการย้อนกลับการดำเนินการทางคณิตศาสตร์ด้วยแบบสอบถามนี้จะทำให้ได้สิ่งนี้
select decimal_column*3 from test;
> result: 0.999999999000000000000000000000
ฉันคาดหวังว่าจะได้จำนวนเต็ม "1" ตามที่เราทำบนเครื่องคิดเลขและในแผ่นงาน Excel! แบบนี้
#calculator or excel sheet
>input: 1 / 3
>result: 0.3333333333333333333333333333333333
>input: * 3
>result: 1
1- เหตุใด MySQL จึงไม่จัดเก็บการแสดงไบนารีที่แน่นอนของ (1 / 3) ดังนั้นฉันจึงสามารถใช้ผลลัพธ์นั้นอีกครั้งในการคำนวณของฉันเนื่องจากอยู่ในหน่วยความจำเช่นเครื่องคิดเลขหรือแผ่นงาน Excel
2- วิธีจัดเก็บผลลัพธ์ของ (1/3)
ใน mysql เนื่องจากอยู่ในหน่วยความจำในช่วงเวลาการคำนวณ ดังนั้นฉันจึงสามารถดึงค่าที่แน่นอนกลับมาและทำบางอย่างเช่น 3 * $storedValue
เพื่อให้ได้ผลลัพธ์เป็น 1 strong> เป็นจำนวนเต็มเหมือนกับที่เราทำในเครื่องคิดเลขหรือแผ่นงาน Excel