소수점 이하 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.