C #에서 소수점 이하 두 자리에서 반올림?


답변:


479

이것은 작동합니다 :

inputValue = Math.Round(inputValue, 2);

float 자르기 해결 방법 : float myTruncFloat = float.Parse (Math.Round (myFloat, 2) .ToString ());
Piero Alberto

1
값이 48.0000 인 경우 결과는 48.00이 아닙니다. 이중 입력 값 = 48.00; inputValue = Math.Round (입력 값, 2); 결과는 48입니다. 어떤 warkaound?
user1926138

100
Math.Round(inputValue, 2, MidpointRounding.AwayFromZero)

4
실제로 사용해야합니다. 뱅크 등에서 대부분의 작업은이 방법 (MidpointRounding.AwayFromZero)을 사용하여 수행됩니다.
MadBoy

41
은행이 복식을 사용하는 것은 무서운 친구이며 통화에 근사값을 사용하지 마십시오.
raggi

6
@raggi 나는 일부 (은행)가 두려워 ... 그것은 많은 것들을 설명 할 것입니다
SparK

4
예, 저는 이것이 아무도 눈치 채지 못할 센트를 반올림 한 후 영화 '오피스 스페이스'가 만들어진 것이라고 믿습니다. 반올림을 임의로 사용할 때주의해야 할 점이 좋습니다.
atconway

1
그리고 오래 전에 원래 슈퍼맨 영화 중 하나의 음모의 일부로.
James Westgate

25

사용해야합니다

inputvalue=Math.Round(inputValue, 2, MidpointRounding.AwayFromZero)

수학. 라운드

Math.Round는 배정 밀도 부동 소수점 값을 지정된 소수 자릿수로 반올림합니다.

미드 포인트

수학 반올림 방법이 두 숫자의 중간에있는 숫자를 처리하는 방법을 지정합니다.

기본적으로 위의 함수는 입력 값을 가져 와서 소수점 이하 자릿수 2 (또는 지정하는 숫자)로 반올림합니다. 로 MidpointRounding.AwayFromZero번호가 다른 두개의 중간 인 경우,이 방향으로 둥글게 0에서 가까운 거리 번호. 가장 가까운 짝수로 반올림하는 다른 옵션도 있습니다 .


25

또 다른 쉬운 방법은 매개 변수와 함께 ToString을 사용하는 것입니다. 예:

float d = 54.9700F;    
string s = d.ToString("N2");
Console.WriteLine(s);

결과:

54.97

19

Math.Round 사용

value = Math.Round(48.485, 2);

(나도 세미콜론을 추가 할지라도;))
Reed Copsey

1
그러나 MidpointRounding에주의하십시오. "숫자 십진 위치의 오른쪽에있는 값의 첫 번째 자릿수의 값이 5 인 경우, 숫자 위치의 자릿수는 홀수이면 반올림되거나 짝수이면 변경되지 않습니다"
Matthias

8

아래에서 시도해 볼 수 있습니다.

1. 
 value=Math.Round(123.4567, 2, MidpointRounding.AwayFromZero) //"123.46"
2.
 inputvalue=Math.Round(123.4567, 2)  //"123.46"
3. 
 String.Format("{0:0.00}", 123.4567);      // "123.46"
4. 
string.Format("{0:F2}", 123.456789);     //123.46
string.Format("{0:F3}", 123.456789);     //123.457
string.Format("{0:F4}", 123.456789);     //123.4568

네 번째 옵션을 사용했습니다. 쓰기 F6 더 ;-) 6 제로 아래로 작성하는 것보다 나를 위해 일
모리스 Klimek에게

2

보간 된 문자열을 사용하면 반올림 된 문자열이 생성됩니다.

var strlen = 6;
$"{48.485:F2}"

산출

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