소수점 이하 2 자리로 형식화


154

원래 숫자를 반올림하지 않고 소수점 이하 두 자리의 숫자를 출력하는 방법을 알고 싶습니다.

예를 들면 다음과 같습니다.

2229,999 -> 2229,99

나는 이미 시도했다 :

FORMAT(2229.999, 2)
CONVERT(2229.999, DECIMAL(4,2))

명령을 사용하여 자르려고하는 것처럼 보입니다. 내장 기능을 사용하지 않는 이유는 무엇입니까?
Fallenreaper

소수점 이하 자릿수가 필요하지 않습니다 DECIMAL(6,2)). 6- 정밀도 (총 자릿수) 및 2는 소수점 이하 자릿수?
user5249203

답변:


82

9
항상 "라운드"를 자릅니다. 2 DP로 잘린 1.999는 1.99이며, 2.00은 수학적으로 더 정확합니다. 그것이 문제가되지 않는다면 잘리는 것이 좋지만 알고 있어야합니다.
GordonM

나는 GordonM에 동의하고 TRUNCATE는 특히 부동 소수점 숫자와 함께 인과 관계에 사용되어야합니다!
성운

364

숫자를 소수점 이하 2 자리로 서식을 지정할 때 TRUNCATE및 두 가지 옵션이 있습니다 ROUND. TRUNCATE기능을 찾고 있습니다.

예 :

반올림하지 않고 :

TRUNCATE(0.166, 2)
-- will be evaluated to 0.16

TRUNCATE(0.164, 2)
-- will be evaluated to 0.16

문서 : http://www.w3resource.com/mysql/mathematical-functions/mysql-truncate-function.php

반올림 :

ROUND(0.166, 2)
-- will be evaluated to 0.17

ROUND(0.164, 2)
-- will be evaluated to 0.16

문서 : http://www.w3resource.com/mysql/mathematical-functions/mysql-round-function.php


2
truncate잘린 숫자를 원할 때 숫자 서식을 지정 하는 데 사용해야 합니다. 그녀는 질문에서 이것이 그녀가하고 싶었던 일이라는 것을 분명히했습니다. 반올림에는 여러 가지 방법이 있습니다 (바닥, 천장, 0에서 멀어짐, 0에서 멀어짐, 반올림, 반감기, 반반). 그것들은 다른 상황에서 적절합니다.
Kip

16
물론 물론, 많은 사람들이 내 대답이 도움이되었거나 ROUND 명령을 찾을 때이 질문을 찾았다는 것을 알 수 있습니다. 그대로 두겠습니다.
jmarceli

"절단 된 자릿수를 잃기 때문에 숫자 형식을 지정하기 위해 TRUNCATE를 사용하면 안됩니다." => 글쎄, 그게 요점입니다 ... Math에서 0.17을 얻는 방법을 모르겠습니다. 귀하의 답변은 프로그래밍 예제에는 완벽하지만 그다지 철저하지는 않습니다.
Benoit Duffez

2
예전에 내가 말했듯이. 나는 이것이이 질문에 대한 정답은 아니라는 것을 알고 있지만 사람들은 그것을 좋아하는 경향이 있습니다 ROUND.
jmarceli

그런 다음 수정해야합니다. 나는 아직도 모든 사람들에게 유용 얻을 것이다, 그리고 그것은 100 % 정확합니다. Win-win :)
Benoit Duffez

14

CAST(2229.999 AS DECIMAL(6,2)) 소수점 이하 2 자리로 소수점을 얻는 방법


4
나는 당신이 캐스트를 의미한다고 생각합니다 (2229.999는 decimal (4,2))
Unroh Iroh

@ UncleIroh, 아니, 나는 그가 실제로 의미하는 것 같아요 convert(2229.999 as decimal(4,2)).
Pacerier

3
@Pacerier-기술적으로 작동합니다. 그러나 convert의 형식은 쉼표와 함께 convert (2229.999, decimal (4,2))입니다. 따라서 아마도 그가 원하는 것이었을 것입니다.
삼촌 Iroh

@ UncleIroh, 아 그래, 내 오타 위입니다. 에 대해 이야기하고 convert(2229.999, decimal(4,2))있었습니다.
Pacerier

4
CAST (2229.999 AS DECIMAL (4,2))는 99.99를 제공합니다. DECIMAL은 소수점 왼쪽의 2를 포함 하여 최대 자릿수 입니다. CAST (2229.99 AS DECIMAL (6,2))은 2230.00을 줄 것입니다
russjohnson09


0

이것은 내가 이것을 사용하는 방법입니다.

CAST(vAvgMaterialUnitCost.`avgUnitCost` AS DECIMAL(11,2)) * woMaterials.`qtyUsed` AS materialCost

0

소수로 표시 ifnull (format (100.00, 1, 'en_US'), 0) 100.0을 선택하십시오.

백분율로 표시 concat (ifnull (format (100.00, 0, 'en_US'), 0), '%') 100 % 선택

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