[C#] C #에서 숫자를 소수점 이하 두 자리로 반올림하는 방법은 무엇입니까?
Math.Round
함수를 사용 하여이 작업을 수행하고 싶습니다.
답변
몇 가지 예는 다음과 같습니다.
decimal a = 1.994444M;
Math.Round(a, 2); //returns 1.99
decimal b = 1.995555M;
Math.Round(b, 2); //returns 2.00
다음과 같은 과부하로 반올림 / 반올림 은행을보고 싶을 수도 있습니다.
Math.Round(a, 2, MidpointRounding.ToEven);
여기에 더 많은 정보가 있습니다 .
답변
이 시도:
twoDec = Math.Round(val, 2)
답변
개인적으로 나는 아무 것도 반올림하지 않습니다. 어쨌든 CS에서 반올림은 약간의 청어이기 때문에 가능한 한 단호하게 유지하십시오. 그러나 사용자의 데이터 형식을 지정하고 싶기 때문에 string.Format("{0:0.00}", number)
이것이 좋은 접근 방법 이라는 것을 알았습니다 .
답변
끈을 원한다면
> (1.7289).ToString("#.##")
"1.73"
아니면 십진수
> Math.Round((Decimal)x, 2)
1.73m
하지만 기억해! 반올림은 분산되지 않습니다. round(x*y) != round(x) * round(y)
. 따라서 계산이 끝날 때까지 반올림하지 마십시오. 그렇지 않으면 정확도가 떨어집니다.
답변
Wikipedia에는 일반적으로 반올림에 대한 좋은 페이지 가 있습니다.
모든 .NET (관리되는) 언어는 모든 공용 언어 런타임 (CLR) 반올림 메커니즘을 사용할 수 있습니다. 예를 들어 Math.Round () (위에서 언급 한) 메서드를 사용하면 개발자가 반올림 유형 (반올림에서 11로 또는 0에서 멀어짐) 을 지정할 수 있습니다. Convert.ToInt32 () 메서드와 그 변형은 round-to-even을 사용 합니다. 천장 () 와 바닥 () 메소드는 관련이 있습니다.
맞춤 숫자 형식 으로 반올림 할 수도 있습니다.
참고 Decimal.Round ()가 Math.Round () 이외의 다른 방법을 사용한다;
다음은 은행가의 반올림 알고리즘에 대한 유용한 위치 입니다. 반올림에 대한 Raymond의 유머 게시물 중 하나를 참조하십시오 …
답변
// 소수점 이하 두 자리까지 변환
String.Format("{0:0.00}", 140.6767554); // "140.67"
String.Format("{0:0.00}", 140.1); // "140.10"
String.Format("{0:0.00}", 140); // "140.00"
Double d = 140.6767554;
Double dc = Math.Round((Double)d, 2); // 140.67
decimal d = 140.6767554M;
decimal dc = Math.Round(d, 2); // 140.67
=========
// just two decimal places
String.Format("{0:0.##}", 123.4567); // "123.46"
String.Format("{0:0.##}", 123.4); // "123.4"
String.Format("{0:0.##}", 123.0); // "123"
“0”과 “#”을 결합 할 수도 있습니다.
String.Format("{0:0.0#}", 123.4567) // "123.46"
String.Format("{0:0.0#}", 123.4) // "123.4"
String.Format("{0:0.0#}", 123.0) // "123.0"
답변
나는 오래된 질문을 알고 있지만 Math round 와 String format round 의 다음 차이점에 유의하십시오 .
decimal d1 = (decimal)1.125;
Math.Round(d1, 2).Dump(); // returns 1.12
d1.ToString("#.##").Dump(); // returns "1.13"
decimal d2 = (decimal)1.1251;
Math.Round(d2, 2).Dump(); // returns 1.13
d2.ToString("#.##").Dump(); // returns "1.13"