programing

double.ToString ()에서 소수점 기호를 변경하는 방법은 무엇입니까?

copyandpastes 2021. 1. 16. 11:01
반응형

double.ToString ()에서 소수점 기호를 변경하는 방법은 무엇입니까?


소수점을 C #의 다른 문자로 변경하고 싶습니다. 나는 double변수가있다value

double value;

그리고 명령을 사용할 때 :

Console.WriteLine(value.ToString()); // output is 1,25

나는 이것을 할 수 있다는 것을 안다.

Console.WriteLine(value.ToString(
    CultureInfo.CreateSpecificCulture("en-GB"))); // output is 1.25

그러나 나는 그것이 매우 길고 프로그램에서 자주 필요하기 때문에별로 좋아하지 않습니다.

"소수점"을 내 문화에서 일반적으로 쉼표가 아닌 포인트로 설정하는 더 짧은 버전이 있습니까?


몇 가지 지름길은 NumberFormatInfo 클래스를 만들고 해당 NumberDecimalSeparator 속성을 "."로 설정하는 것입니다. 필요할 때마다 ToString () 메서드에 대한 매개 변수로 클래스를 사용하십시오.

using System.Globalization;

NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalSeparator = ".";

value.ToString(nfi);

확장 방법을 만드시겠습니까?

Console.WriteLine(value.ToGBString());

// ...

public static class DoubleExtensions
{
    public static string ToGBString(this double value)
    {
        return value.ToString(CultureInfo.GetCultureInfo("en-GB"));
    }
}

아마도 당신의 질문의 의도를 오해하고있을 것입니다. 만약 제가 틀렸다면 저를 정정하십시오. 그러나 문화 설정을 한 번 전체적으로 적용하고 모든 쓰기 문을 사용자 정의하는 것에 대해 걱정하지 않으시겠습니까?

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");

숫자를 표시하는 데 사용되는 문화권을 변경하여 소수점 구분 기호를 변경할 수 있습니다. 그러나 이렇게하면 숫자에 대한 모든 것이 변경됩니다 (예 : 그룹화 구분 기호, 그룹화 크기, 소수 자릿수). 귀하의 질문에 따르면 쉼표를 소수 구분 기호로 사용하는 문화권을 기본값으로 사용하는 것 같습니다.

변경하려면 단지 문화를 변경하지 않고 소수 구분 기호를, 당신은 수정할 수 있습니다 NumberDecimalSeparator현재 문화의의 속성을 NumberFormatInfo.

Thread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";

이것은 스레드의 현재 문화를 수정합니다. 이제 모든 출력이 변경됩니다. 즉 value.ToString(), 숫자를 출력 할 때마다 문화권 변경에 대해 걱정하지 않고 원하는 형식을 출력하는 데 사용할 수 있습니다.

( 중립 문화권은 소수점 구분 기호를 변경할 수 없습니다.)


Convert.ToString(value, CultureInfo.InvariantCulture);

Asp.Net 웹 응용 프로그램 web.config이있는 경우 전체 웹 응용 프로그램에서 동일하도록 에서 설정할 수도 있습니다.

<system.web>
    ...
    <globalization 
        requestEncoding="utf-8" 
        responseEncoding="utf-8" 
        culture="en-GB" 
        uiCulture="en-GB" 
        enableClientBasedCulture="false"/>
    ...
</system.web>

참조 URL : https://stackoverflow.com/questions/3135569/how-to-change-symbol-for-decimal-point-in-double-tostring

반응형