>

App.config에서 값을 읽고 있습니다. 이것은 :

<add key="someValue" value="0.05"/>

그리고 다음을 수행하여 두 배로 변환하려고합니다.

var d = double.Parse(ConfigurationManager.AppSettings["someValue"]);

0.05 대신 5.0을 얻습니다.

당신은 조언을 할 수 있습니까? 내가 뭘 잘못하고 어떻게 파싱해야하나요?


  • 답변 # 1

    귀하의 문화 설정을 위해 동일하지만 점 대신 쉼표로 테스트하면 그 결과가 표시됩니다

    var d = double.Parse("0,05");
    
    

    이 문제를 해결하기 위해 파싱 함수의 다음 오버로드를 사용할 수 있습니다

    var d = double.Parse(ConfigurationManager.AppSettings["someValue"], CultureInfo.InvariantCulture);
    
    

  • 답변 # 2

    문화 설정에 문제가있을 수 있습니다. 디지털 분리기와 같은 쉼표와 같은 많은 문제가있을 수 있습니다. 구성 파일과 같이 문화권이없는 값으로 작업 할 때는 InvariantCulture가 필요하다는 것을 명시 적으로 지정해야합니다. 시도

    var d = double.Parse(ConfigurationManager.AppSettings["someValue"],
                         CultureInfo.InvariantCulture);
    
    

  • 답변 # 3

    이 코드 :

    var nfi = new NumberFormatInfo {
        NumberGroupSeparator = ".",
        NumberDecimalSeparator = ","
    };
    Console.WriteLine(double.Parse("0.05", nfi));
    
    

    프린트 5  또한 문화 설정에 문제가 있습니다.

    시도

    var d = double.Parse(
        ConfigurationManager.AppSettings["someValue"], 
        CultureInfo.InvariantCulture);
    
    

  • 답변 # 4

    double.Parse를 사용할 때는 항상 문화 정보를 전달하십시오. 여기 벨기에에서는 "0,05"입니다.

  • 답변 # 5

    문화 설정 때문입니다. 확인하시기 바랍니다 "." 현재 문화의 구분자입니다.

  • 이전 javascript - 브라우저/뷰포트 대신 컨테이너 요소 내에서 고정 된 위치
  • 다음 날짜의 핵심 데이터 NSPredicate