MySQL에서 가장 가까운 정수로 내림하는 방법은 무엇입니까?


84

MySQL에서 가장 가까운 정수로 어떻게 내림합니까?

예: 12345.7344 rounds to 12345

mysql의 round()함수가 반올림됩니다.

값이나 소수점 이하 자릿수가 얼마나 길지 모르겠습니다. 10 자리가 될 수도 있고 4 자리가 될 수도 있고 2 자리가 될 수도 있고 7 자리가 될 수도 있습니다.


예제는 가장 가까운 정수로 반올림하지 않습니다!
Patrick Honorez

1
@PatrickHonorez 귀하의 의견은 5 년 된 질문에 대한 것이며 질문을 오해 한 것 같습니다. OP는 가장 가까운 정수로 반올림 할 함수를 요청합니다.
Warren Sergent

실제로 @WarrenSergent : - /
패트릭 Honorez

답변:


119

FLOOR 사용 :

SELECT FLOOR(your_field) FROM your_table

감사합니다. 그것은 내가 round ()에 대해 읽는 내내 나를 쳐다보고 있었다.
d -_- b

좋아, 나는 그 주석을 삭제했다. 나는 이것을 시도했고 FLOOR()두 개의 하위 쿼리 (하위 쿼리 차이는 -70.00이었다) 사이의 차이가 있을 때 0을 반환했습니다 ... 이전에 본 적이 있습니까?
스티븐

46

소수를 더 낮은 정수 로 반올림 하려면 FLOOR ()를 사용하십시오 . 예 :

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

소수점을 가장 가까운 정수 로 반올림 하려면 ROUND ()를 사용하십시오 . 예 :

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

소수를 상위 정수 로 반올림 하려면 CEIL ()을 사용하십시오 . 예 :

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


3

SUBSTRFLOORFLOOR에는 다음과 같은 "버그"가 있기 때문에 어떤 경우 보다 낫습니다 .

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
방금 MySQL 5.6.40에서 SELECT FLOOR (25 * 9.54 + 0.5)를 테스트했고 239를 반환했습니다.
Winter Dragoness

1

다음 두 가지 방법으로 수행 할 수 있습니다.

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

2 차 설명 : 12345.7344 정수를 가정합니다. 따라서 12345.7344-0.5 = 12345.2344이고 결과를 반올림하면 12345가됩니다.



0

소수가 필요한 경우 이것을 사용할 수 있습니다

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

출력 : 19.147100 지우기 : 985 추가 : 00

또는 이것을 사용하십시오 :

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

출력 : 19.1471 투명 : 985

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.