“41.00027357629127”과 같은 문자열을 변환하고 있으며 사용하고 있습니다.
Convert.ToSingle("41.00027357629127");
또는
float.Parse("41.00027357629127");
이러한 메서드는 4.10002732E + 15를 반환 합니다.
float로 변환 할 때 “41.00027357629127”을 원합니다. 이 문자열은 동일해야합니다 …
답변
스레드의 로케일은 소수점이 “.”대신 “,”로 설정됩니다.
이것을 사용해보십시오 :
float.Parse("41.00027357629127", CultureInfo.InvariantCulture.NumberFormat);
그러나 float는 그만큼의 정밀도를 보유 할 수 없습니다. 그렇게하려면 double 또는 Decimal을 사용해야합니다.
답변
첫째, 디버거에서 볼 수 있는 숫자 의 표현 일뿐 float
입니다. 실제 값은 약 정확한 (만큼 그것이 가능으로)입니다.
참고 : 부동 소수점 숫자와 문자열을 다룰 때는 항상 CultureInfo 정보를 사용하십시오 .
float.Parse("41.00027357629127",
System.Globalization.CultureInfo.InvariantCulture);
이것은 단지 예일뿐입니다. 귀하의 사례에 적합한 문화를 선택하십시오.
답변
다음을 사용할 수 있습니다.
float asd = (float) Convert.ToDouble("41.00027357629127");
답변
답변
float 의 정밀도 는 7 자리입니다. 전체 로트를 유지하려면 15-16 자리 숫자를 유지 하는 이중 유형 을 사용해야합니다 . 서식에 대해서는 doubles 서식 에 대한 게시물을 참조하십시오 . 그리고 C #의 소수 구분 기호에 대해 걱정할 필요가 있습니다.
답변
당신은 할 수 있습니다 double.Parse("41.00027357629127");
답변
더 정확한 값을 얻으려면 float 대신 double로 구문 분석을 사용할 수 있습니다.