현재 10 진수 값을 표시 할 때 .ToString()
15 자리를 좋아하는 것이 정확하며, 달러와 센트를 나타내는 데 사용하기 때문에 출력은 소수점 2 자리 만 원합니다.
.ToString()
이 변형을 사용 합니까?
답변
decimalVar.ToString ("#.##"); // returns "" when decimalVar == 0
또는
decimalVar.ToString ("0.##"); // returns "0" when decimalVar == 0
답변
나는 이것이 오래된 질문이라는 것을 알고 있지만 아무도 그 답을 올리지 않는 것 같았다.
- 은행 반올림을 사용하지 않았습니다
- 값을 10 진수로 유지하지 않았습니다.
이것이 내가 사용하는 것입니다 :
decimal.Round(yourValue, 2, MidpointRounding.AwayFromZero);
http://msdn.microsoft.com/en-us/library/9s0xa85y.aspx
답변
decimalVar.ToString("F");
이것은 :
- 소수점 이하 두 자리로 반올림합니다 ( 예 :
23.456
→23.46
- 소수점 이하 두 자리가 항상 있는지 확인하십시오 ( 예 :
23
→23.00
;12.5
→12.50
통화 표시에 이상적입니다.
ToString ( “F”) 에 대한 문서를 확인하십시오 (Jon Schneider 덕분에).
답변
표시를 위해 이것을 필요로하는 경우 string을 사용하십시오.
String.Format("{0:0.00}", 123.4567m); // "123.46"
http://www.csharp-examples.net/string-format-double/
“m”은 10 진수 접미사입니다. 소수 접미사 정보 :
답변
주어진 10 진수 d = 12.345; d.ToString ( “C”) 또는 String.Format ( “{0 : C}”, d) 표현식 은 $ 12.35입니다. .-기호를 포함한 현재 문화권의 통화 설정이 사용됩니다.
참고 “C” 현재 문화권에서 숫자의 사용 번호. C{Precision specifier}
like로 필요한 정밀도를 강제하기 위해 항상 기본값을 무시할 수 있습니다 String.Format("{0:C2}", 5.123d)
.
답변
3,456,789.12와 같이 소수점과 통화 기호가 아닌 쉼표로 형식을 지정하려면 …
decimalVar.ToString("n2");
답변
Decimal.Round (…)를 참조하는 두 개의 높은 점수 답변이 이미 있지만 조금 더 설명이 필요하다고 생각합니다 .Decimal의 예기치 않은 중요한 속성이 분명하지 않기 때문입니다.
십진수는 어디서 왔는지에 따라 소수 자릿수가 얼마나 많은지를 ‘알고’있습니다.
예를 들어 다음은 예상치 못한 결과 일 수 있습니다.
Decimal.Parse("25").ToString() => "25"
Decimal.Parse("25.").ToString() => "25"
Decimal.Parse("25.0").ToString() => "25.0"
Decimal.Parse("25.0000").ToString() => "25.0000"
25m.ToString() => "25"
25.000m.ToString() => "25.000"
동일한 작업을 수행하면 위의 각각에 Double
소수점 이하 자릿수 ( "25"
) 가 표시되지 않습니다 .
소수점 이하 2 자리를 원할 때 약 95 % 확률이 있습니다. 통화 인 경우 통화 시간이 95 %에 해당 할 수 있습니다.
Decimal.Parse("25.0").ToString("c") => "$25.00"
또는 XAML에서 그냥 사용하십시오. {Binding Price, StringFormat=c}
XML을 Amazon의 웹 서비스에 보낼 때 10 진수로 10 진수가 필요한 경우가 발생했습니다. 10 진수 값 (원래 SQL Server에서 온)이 전송되어 25.1200
거부 되어 서비스가 불만을 제기했습니다 (25.12
있었습니다 (예상 형식).
내가해야 할 일은 Decimal.Round(...)
문제를 해결하기 위해 소수점 이하 2 자리를 사용하는 것입니다.
// This is an XML message - with generated code by XSD.exe
StandardPrice = new OverrideCurrencyAmount()
{
TypedValue = Decimal.Round(product.StandardPrice, 2),
currency = "USD"
}
TypedValue
유형이 Decimal
있으므로 그냥 할 수 없었고 ToString("N2")
반올림하고로 유지해야했습니다 decimal
.