2017-11-01 31 views
1

저는 C#에서 새로 왔으며 콘솔에서 값 플로트를 시도했지만 소수점을 남기지 않았습니다. 나는 3.7을 작성하는 경우 인쇄 promedio (평균) 다음은 보면터미널에서 플로트 가져온 경우는 혼돈없이 남았습니다.

do { 
     Console.Write("Promedio:\t"); 
     promedio = float.Parse(Console.ReadLine()); 
      if (promedio < 0.0 || promedio > 5.0) { 
       Console.WriteLine("Error: >> Promedio incorrecto, digite un valor entre 0.0 y 5.0\n"); 
      } 
    } while (promedio < 0 || promedio > 5); 

: (37) 게다가, 반면 위의 코드에 어느 promedio 잘못 말에 대한

이 내 코드입니다.

오류 란 무엇인가요? 제안 또는 권장 사항 ?? ... 감사. PD : "."죄송합니다 제 영어

+0

코드에서 콘솔에 숫자 값을 인쇄하는 곳을 어디에도 볼 수 없습니다. 이 코드가 모두 귀하의 코드입니까? –

+2

코드를 복사하여 빈 Main에 붙여 넣고 그 위에'var promedio = 0.0F;'를 추가하면 3.7을 입력했을 때 제대로 실행됩니다. do-while 루프에서 빠져 나와 디버거가 promedio를 3.7으로 표시했습니다. –

+3

로케일 문제일까요? 'float.Parse (Console.ReadLine(), System.Globalization.NumberStyles.Float, System.Globalization.NumberFormatInfo.InvariantInfo)' – BurnsBA

답변

0

이제 플로트를 구문 분석하는 데 사용되는 구분되는 do{}while();

CultureInfo ci = (CultureInfo)Thread.CurrentThread.CurrentCulture.Clone(); 
ci.NumberFormat.DecimalNumberSeparator = "."; 
Thread.CurrentThread.CurrentCulture = ci; 

전에이 일을보십시오 따라서 3.7은 원하는 번호로 성공적으로 파싱되어야합니다. 희망이 도움이됩니다.

+0

나는 OP가 스페인어 일 수 있으며 쉼표 소수 구분 기호를 사용하려고합니다. – spodger

+0

@spodger OP가주는 샘플 입력은'3.7'입니다.','로 변경하는 것이 좋습니다. – dcg

+0

확실히 현지화/문화 문제입니다. – KinSlayerUY