2 자리로 반올림하려면 double 값이 필요합니다. 어떤 것을 선호합니까?Math.Round vs String.Format
String.Format("{0:0.00}", 123.4567); // "123.46"
Math.Round(123.4567, 2) // "123.46"
2 자리로 반올림하려면 double 값이 필요합니다. 어떤 것을 선호합니까?Math.Round vs String.Format
String.Format("{0:0.00}", 123.4567); // "123.46"
Math.Round(123.4567, 2) // "123.46"
출력이 달라야하는 경우 다른 기능입니다. 첫 번째 출력을 사용하면 소수점이 표시됩니다. 변수가 double 유형 인 경우 필연적 인 .ToString() 오버 헤드를 피할 수 있습니다.
전자는 문자열을 출력하고 후자는 double을 출력합니다. 결과를 어떻게 사용합니까? 이것에 대한 답은 당신의 질문에 대한 답을 줄 것입니다.
당신이 그것을 수행 할 작업에 따라 달라집니다 : 두 번째는 숫자를 반올림하지만 정수 결과가 있다면, 당신은 (7 7.00 대 예) 그냥 정수를 얻을 것이다
참고.
String.Format
문자열을 반환하므로 Math.Round(double)
은 double을 반환합니다.
이 값을 문자열로 반환하려면 String.Format이 더 좋으며이 값을 double로 반환하려면 Math.Round가 더 좋습니다. 그것의 전적으로 귀하의 요구 사항에 따라 달라집니다.
Math.Round(double,digits)
숫자가 0 이상인 것은 개념적으로 매우 부정합니다. 하지만 결코 사용해서는 안된다고 생각합니다. double
은 이진 부동 소수점 숫자이므로 잘 정의 된 십진수 개념이 없습니다.
십진수 표시 목적으로 만 사용할 필요가있는 경우 string.Format
또는 ToString("0.00")
을 사용하고 실제 숫자를 반올림해야하는 경우 decimal.Round
을 사용하는 것이 좋습니다 (예 : 추가 계산에서 사용).
참고 : decimal.Round
을 사용하면 MidpointRounding
모드를 지정할 수 있습니다. ToEven
반올림이 아니라 일반적으로 AwayFromZero
반올림을 원합니다. 0.005m
반올림 ToEven
와
는 0.00
로 반올림됩니다 및 0.015
는 0.02
로 반올림됩니다. 그것은 대부분의 사람들이 기대하는 것이 아닙니다.
비교 :
6,자세한 내용은 다음을 참조하십시오 https://msdn.microsoft.com/en-us/library/system.math.round.aspx
... "대부분의 사람들"이 아니라면 어떻게해야합니까? –
음이 필요로 동일하지, 당신은'Math.Round'을 선호하고 반올림 옵션을 사용하여, 또한이 [반올림 문자열 형식 (HTTP 확인할 수 있도록 : // 유래합니다. com/questions/2226081/왜 - 그물 - 사용 - 반올림 알고리즘 - 문자열 형식 - 일치하지 않는 - 위트) – V4Vendetta
당신이 두 배로 통화를 저장하는 경우가 아니라면, 십진법을 사용하는 것이 좋습니다. http://msdn.microsoft.com/en-us/library/364x0z75%28v=vs.80%29.aspx – spender
'Math.0 자릿수의 '(double, digits)'는 개념적으로 매우 부정합니다. 나는 결코 사용되어서는 안된다고 생각합니다. 'double'은 이진 부동 소수점 숫자이므로 잘 정의 된 십진수 개념이 없습니다. 숫자를 특정 소수 자릿수로 반올림해야하는 경우 'Double'이 아닌 'Decimal'을 사용하십시오. – CodesInChaos