Hướng dẫn mysql round not working - vòng mysql không hoạt động

Tôi không thể hiểu tại sao kết quả của tôi lại khác nhau:

Tôi có đơn đặt hàng bảng và giá cột (nhập gấp đôi trong mysql).orders and column price (type double in mysql).

Giá trị giá trong cơ sở dữ liệu là 13,5.price value in database is 13.5.

query:

SELECT ROUND(price * 0.09, 2) FROM orders where id = 1;

Kết quả là: 1.211.21

query:

SELECT ROUND(13.5 * 0.09, 2);

Kết quả là 1,221.22

Không có làm tròn: Kết quả SELECT 13.5 * 0.09 là 1.2151.215

Vì vậy, kết quả chính xác sau vòng là 1,22.1.22.

Tại sao truy vấn SELECT ROUND(price * 0.09, 2) FROM orders where id = 1; cho tôi kết quả sai (1.21)?

Tôi không thể hiểu có gì sai, tôi đoán điều gì đó với việc đúc.

Ai đó có thể giải thích cho tôi nó?

Định nghĩa và cách sử dụng

Hàm vòng () làm tròn một số đến một số vị trí thập phân được chỉ định.

LƯU Ý: Xem thêm Sloor (), trần (), trần () và các hàm cắt ngắn ().

Cú pháp

salary DECIMAL(5,2)

Trong ví dụ này,

SELECT ROUND(13.5 * 0.09, 2);
4 là độ chính xác và
SELECT ROUND(13.5 * 0.09, 2);
5 là thang đo. Độ chính xác đại diện cho số lượng các chữ số quan trọng được lưu trữ cho các giá trị và tỷ lệ biểu thị số chữ số có thể được lưu trữ theo điểm thập phân.

SQL tiêu chuẩn yêu cầu

SELECT ROUND(13.5 * 0.09, 2);
6 có thể lưu trữ bất kỳ giá trị nào với năm chữ số và hai số thập phân, do đó, các giá trị có thể được lưu trữ trong phạm vi cột
SELECT ROUND(13.5 * 0.09, 2);
7 từ
SELECT ROUND(13.5 * 0.09, 2);
8 đến
SELECT ROUND(13.5 * 0.09, 2);
9.

Trong SQL tiêu chuẩn, cú pháp

salary DECIMAL(5,2)
0) tương đương với ____ 20,0). Tương tự, cú pháp DECIMAL tương đương với ____ 20,0), trong đó việc thực hiện được phép quyết định giá trị của
salary DECIMAL(5,2)
4. MySQL hỗ trợ cả hai dạng biến thể của cú pháp DECIMAL này. Giá trị mặc định của
salary DECIMAL(5,2)
4 là 10.

Nếu tỷ lệ là 0, các giá trị DECIMAL không chứa phần thập phân hoặc phần phân số.

Số lượng chữ số tối đa cho DECIMAL là 65, nhưng phạm vi thực tế cho một cột DECIMAL đã cho có thể bị hạn chế bởi độ chính xác hoặc tỷ lệ cho một cột nhất định. Khi một cột như vậy được gán một giá trị với nhiều chữ số theo điểm thập phân hơn so với được cho phép theo thang đo được chỉ định, giá trị được chuyển đổi thành thang đo đó. .


  • Lượt xem
  • Thêm bình luận
  • Các tập tin
  • Nhà phát triển
  • Chỉnh sửa đệ trình
  • Xem nhật ký tiến trình
  • Đóng góp

Description:
I seem to be having problems returning the expected results when using the mysql ROUND() function.

Rounding 3.565 to 2 decimal places I would expect to return 3.57 however using

mysql> SELECT ROUND(3.565, 2);
+-----------------+
| ROUND(3.565, 2) |
+-----------------+
|            3.56 |
+-----------------+
1 row in set (0.02 sec)

The above should return 3.57.

mysql> SELECT ROUND(3.575, 2);
+-----------------+
| ROUND(3.575, 2) |
+-----------------+
|            3.58 |
+-----------------+
1 row in set (0.00 sec)

This one works as expected returning 3.58.

I am using mysql version 4.0.20.  I have also heard of the problem occurring on version 3.23.54 as well.  Keep up the great work!!!

Have a great day,
Chris Calender

How to repeat:
It seems to happen when the second decimal place is a 6.

Thí dụ

Làm tròn số đến 0 số thập phân:

Chọn vòng (345.156, 0);

Hãy tự mình thử »


Làm tròn cột giá (đến 1 thập phân) trong bảng "Sản phẩm":

Chọn sản phẩm, giá, vòng (giá, 1) là các sản phẩm RoundedPriceFrom;

Làm tròn số lượng đến 2 chữ số thập phân: See also the FLOOR(), CEIL(), CEILING(), and TRUNCATE() functions.

Chọn vòng (135.375, 2);

Định nghĩa và cách sử dụng

Hàm vòng () làm tròn một số đến một số vị trí thập phân được chỉ định.

LƯU Ý: Xem thêm Sloor (), trần (), trần () và các hàm cắt ngắn ().Cú pháp
Vòng (số, số thập phân)Giá trị tham số
Tham sốSự mô tả

con số

Yêu cầu.Số lượng được làm trònsố thập phân

Nhiều ví dụ hơn

Thí dụ

Làm tròn số đến 0 số thập phân:

Chọn vòng (345.156, 0);

Hãy tự mình thử »

Thí dụ

Làm tròn số đến 0 số thập phân:

Chọn vòng (345.156, 0);
FROM Products;

Hãy tự mình thử »