[C#] C # Double-소수점 이하 두 자리이지만 반올림이없는 ToString () 형식

소수점 이하 두 자리 만 갖도록 C #에서 a Double를 어떻게 형식화 String합니까?

String.Format("{0:0.00}%", myDoubleValue)숫자를 사용 하면 반올림되고 반올림하지 않고 간단한 자르기를 원합니다. 또한 전환 String이 문화에 민감 해지기를 원합니다 .



답변

나는 다음을 사용한다 :

double x = Math.Truncate(myDoubleValue * 100) / 100;

예를 들어 :

숫자가 50.947563이고 다음을 사용하면 다음이 발생합니다.

- Math.Truncate(50.947563 * 100) / 100;
- Math.Truncate(5094.7563) / 100;
- 5094 / 100
- 50.94

그리고 답을 잘랐습니다. 이제 문자열을 포맷하려면 다음을 수행하십시오.

string s = string.Format("{0:N2}%", x); // No fear of rounding and takes the default number format


답변

다음 은 숫자를 반올림 하지만으로 인해 소수점 이하 2 자리까지 표시합니다 (마침표 0 제거) .##.

decimal d0 = 24.154m;
decimal d1 = 24.155m;
decimal d2 = 24.1m;
decimal d3 = 24.0m;

d0.ToString("0.##");   //24.15
d1.ToString("0.##");   //24.16 (rounded up)
d2.ToString("0.##");   //24.1  
d3.ToString("0.##");   //24

http://dobrzanski.net/2009/05/14/c-decimaltostring-and-how-to-get-rid-of-trailing-zeros/


답변

먼저 자른 다음 형식을 지정하는 것이 좋습니다.

double a = 123.4567;
double aTruncated = Math.Truncate(a * 100) / 100;
CultureInfo ci = new CultureInfo("de-DE");
string s = string.Format(ci, "{0:0.00}%", aTruncated);

2 자리 자르기에는 상수 100을 사용하십시오. 원하는 소수점 다음의 숫자만큼 1과 숫자 0을 사용하십시오. 서식 결과를 조정해야하는 문화권 이름을 사용하십시오.


답변

가장 간단한 방법은 숫자 형식 문자열을 사용하는 것입니다.

double total = "43.257"
MessageBox.Show(total.ToString("F"));


답변

나는 price.ToString("0.00")
0을 얻는 데 사용 합니다.


답변

Kyle Rozendo가 표현한 c # 함수 :

string DecimalPlaceNoRounding(double d, int decimalPlaces = 2)
{
    d = d * Math.Pow(10, decimalPlaces);
    d = Math.Truncate(d);
    d = d / Math.Pow(10, decimalPlaces);
    return string.Format("{0:N" + Math.Abs(decimalPlaces) + "}", d);
}


답변

반올림 한 다음 버려야 할 소수를 하나 더 추가하는 방법은 다음과 같습니다.

var d = 0.241534545765;
var result1 = d.ToString("0.###%");

var result2 = result1.Remove(result1.Length - 1);