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

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

예: 12345.7344 rounds to 12345

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

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



답변

FLOOR 사용 :

SELECT FLOOR(your_field) FROM your_table


답변

소수를 더 낮은 정수 로 반올림 하려면 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


답변

SELECT FLOOR(12345.7344);

여기에서 자세한 내용을 읽어보십시오 .


답변

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


답변

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

  • 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가됩니다.


답변

이 시도,

SELECT SUBSTR(12345.7344,1,LOCATE('.', 12345.7344) - 1)

또는

SELECT FLOOR(12345.7344)

SQLFiddle 데모


답변

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

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