Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

SELECT FLOAT ด้วยความแม่นยำที่กำหนดใน MySQL ด้วย ROUND()


คำสั่งหลัก

ใช้ ROUND(column, decimal_places) ปัดเศษทศนิยมตามจำนวนหลักที่ต้องการ

รูปแบบคำสั่ง

SELECT ROUND(yourColumnName, yourPrecisionIntegerValue) FROM yourTableName;

ตัวอย่างครบถ้วน

1. สร้างตาราง

mysql> create table givenPrecisionDemo 
    -> ( 
    -> Amount float 
    -> ); 
Query OK, 0 rows affected (0.61 sec)

2. เพิ่มข้อมูลทศนิยม

mysql> insert into givenPrecisionDemo(Amount) values(45.678); 
Query OK, 1 row affected (0.12 sec)
mysql> insert into givenPrecisionDemo(Amount) values(123.456); 
Query OK, 1 row affected (0.15 sec)
mysql> insert into givenPrecisionDemo(Amount) values(245.890); 
Query OK, 1 row affected (0.20 sec)
mysql> insert into givenPrecisionDemo(Amount) values(980.678); 
Query OK, 1 row affected (0.19 sec)

3. ดูข้อมูลดิบ

mysql> select * from givenPrecisionDemo;
+---------+
| Amount  |
+---------+
| 45.678  |
| 123.456 |
| 245.89  |
| 980.678 |
+---------+

4. ROUND 2 ตำแหน่งทศนิยม

mysql> SELECT ROUND(Amount, 2) from givenPrecisionDemo;
+-----------------+
| ROUND(Amount,2) |
+-----------------+
| 45.68           |
| 123.46          |
| 245.89          |
| 980.68          |
+-----------------+

ROUND() Behavior Details

InputROUND(x,2)หมายเหตุ
45.67845.68ปัดขึ้น (8>5)
123.456123.46ปัดขึ้น (6>5)
245.890245.890 ท้ายถูกตัดทิ้ง
980.678980.68ปัดขึ้น
-45.678-45.68ลบก็ปัดไปทางจากศูนย์

ฟังก์ชันเกี่ยวข้อง

Functionพฤติกรรมตัวอย่าง
ROUND(x, d)ปัดปกติ (round half up)ROUND(1.5,0)=2
TRUNCATE(x, d)ตัดทิ้ง (ไม่ปัด)TRUNCATE(1.999,2)=1.99
CEIL(x)ปัดขึ้นCEIL(1.1)=2
FLOOR(x)ปัดลงFLOOR(1.9)=1
FORMAT(x, d)format พร้อม commaFORMAT(1234.5,2)='1,234.50'

ปัญหา FLOAT Precision

SELECT ROUND(0.1 + 0.2, 2);  -- 0.3 ✓
SELECT 0.1 + 0.2;            -- 0.30000000000000004 ❌

แนะนำ: ใช้ DECIMAL สำหรับเงิน/การคำนวณแม่นยำ ใช้ FLOAT/DOUBLE สำหรับวิทยาศาสตร์/engineering ที่ยอมรับ error ได้

MySQL 8.0: ROUND() กับ DECIMAL คืนค่า DECIMAL

SELECT ROUND(CAST(45.678 AS DECIMAL(10,3)), 2);  -- 45.68 (DECIMAL)