Làm thế nào để làm tròn xuống số nguyên gần nhất trong MySQL?


83

Làm cách nào để làm tròn xuống số nguyên gần nhất trong MySQL?

Thí dụ: 12345.7344 rounds to 12345

round()Chức năng của mysql làm tròn.

Tôi không biết các giá trị cũng như các vị trí thập phân sẽ dài bao lâu, có thể là 10 chữ số với 4 chữ số thập phân, có thể là 2 chữ số với 7 chữ số thập phân.


Ví dụ của bạn KHÔNG làm tròn đến số nguyên gần nhất!
Patrick Honorez

1
@PatrickHonorez Nhận xét của bạn dành cho Câu hỏi 5 tuổi, và có vẻ như bạn đã hiểu nhầm Câu hỏi. OP đang yêu cầu một hàm làm tròn DOWN đến số nguyên gần nhất.
Warren Sergent

@WarrenSergent thực sự: - /
Patrick Honorez

Câu trả lời:


117

Sử dụng FLOOR :

SELECT FLOOR(your_field) FROM your_table

Cảm ơn bạn. Nó đã nhìn chằm chằm vào mặt tôi trong suốt thời gian tôi đọc về round ().
d -_- b

Ok, tôi đã xóa nhận xét đó, tôi đã thử điều này và nó trả về 0 khi FLOOR()sự khác biệt giữa 2 truy vấn con (chênh lệch truy vấn con là -70.00) ... bạn đã từng thấy điều đó trước đây chưa?
stephen

44

Sử dụng FLOOR () , nếu bạn muốn làm tròn số thập phân của mình thành số nguyên thấp hơn . Ví dụ:

FLOOR(1.9) => 1
FLOOR(1.1) => 1

Sử dụng ROUND () , nếu bạn muốn làm tròn số thập phân của mình thành số nguyên gần nhất . Ví dụ:

ROUND(1.9) => 2
ROUND(1.1) => 1

Sử dụng CEIL () , nếu bạn muốn làm tròn số thập phân của mình thành số nguyên trên . Ví dụ:

CEIL(1.9) => 2
CEIL(1.1) => 2


3

SUBSTRsẽ tốt hơn FLOORtrong một số trường hợp vì FLOOR có một "lỗi" như sau:

SELECT 25 * 9.54 + 0.5 -> 239.00

SELECT FLOOR(25 * 9.54 + 0.5) -> 238  (oops!)

SELECT SUBSTR((25*9.54+0.5),1,LOCATE('.',(25*9.54+0.5)) - 1) -> 239

2
Tôi chỉ thử nghiệm CHỌN SÀN (25 * 9,54 + 0,5) trên MySQL 5.6.40 và nó sẽ trả về 239.
Winter Dragoness

1

Nó có thể được thực hiện theo hai cách sau:

  • select floor(desired_field_value) from table
  • select round(desired_field_value-0.5) from table

Cách giải thích thứ 2: Giả sử số nguyên 12345.7344. Vì vậy, 12345.7344 - 0.5 = 12345.2344 và làm tròn kết quả sẽ là 12345.



0

nếu bạn cần số thập phân có thể sử dụng cái này

DECLARE @Num NUMERIC(18, 7) = 19.1471985
SELECT FLOOR(@Num * 10000) / 10000

Đầu ra: 19.147100 Xóa: 985 Thêm: 00

HOẶC sử dụng cái này:

SELECT SUBSTRING(CONVERT(VARCHAR, @Num), 1, CHARINDEX('.', @Num) + 4)

Đầu ra: 19.1471 Rõ ràng: 985

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.