문제

여러 가지 이유로, 나는 복식 대신 내 코드에서 플로트를 사용해야합니다. 내 코드에서 문자를 사용하려면 다음과 같은 것을 써야합니다.

float f = 0.75F;

또는 컴파일러는 "0.75"만 더블로 취급하므로 바프가됩니다. 내 코드에 넣거나 Visual Studio에 설정할 수있는 것이 있습니까? 매번 "F"를 추가하지 않고도 "0.75"와 같은 문자를 플로트로 취급 할 수 있습니까?

도움이 되었습니까?

해결책

플로트는 f :-)와 함께 제공됩니다.

다른 팁

아니요 - 다행히도, IMO. 리터럴은 어디에서나 같은 방식으로 처리됩니다.

이것은 좋은 일입니다. 일부 유지 보수 개발자가 와서 1 년 안에 코드를보고 있다고 상상해보십시오. 그는 "0.75"를보고 "나는 C#을 알고 있다고 생각합니다 - 그것은 두 배입니다! 매달려, 어떻게 플로트 변수에 할당됩니까?" ick.

"F"를 어디에나 추가하는 것이 정말로 고통 스럽습니까? 당신은 정말로 가지고 있습니까? 저것 많은 상수? 당신은 그들을 추출 할 수 있습니까? ~처럼 상수 값, 따라서 모든 "f-suffixed"리터럴은 같은 장소에 있습니다.

참고 - C#에 대한 모든 컴파일러 옵션을 찾을 수 있습니다. http://msdn.microsoft.com/en-us/library/6ds95cz0.aspx. 거기에서 확인하면 @Jon Skeet이 언급 한 이유 때문에이를 허용하는 옵션이 없음을 알 수 있습니다.

언어는 부동 소수점 정밀 리터럴을 어디서나 두 배로 해석합니다. 이것은 컴파일러의 구성 가능한 기능이 아니며 정당한 이유가 있습니다.

언어가 코드를 해석하는 방법을 구성하면 호환성과 유지 보수 개발자가 코드의 의미를 이해하는 능력에 문제가됩니다.

일반적으로 권장하지는 않지만 다음을 사용하여 C# 3의 통증을 약간 줄일 수 있습니다.

var f = 0.75F;

이 구문으로 'f'접미사를 잊어 버리면 컴파일러가 플로트가 아닌 이중을 생성하게되므로 조심하십시오.

나는 당신이 항상 사용하는 것이 좋습니다

var meaning = 1f;

"VAR"키워드는 많은 인간의 해석과 유지 보수 시간을 절약하기 때문입니다.

적절한 동작은 컴파일러가 하나의 위에없는 리터럴을 단일 정밀도로 해석하는 것이 아니라, 이중에서 플로트로의 변환이 모든 이후로 넓은 변환으로 간주되어야한다는 것을 인식하는 것이 아니라 오히려 double 값, 정확히 명백히 수정 된 것이 있습니다 float 표현, 또는 (몇 가지 희귀 한 가장자리의 경우) 정확히 두 개의 똑같이 좋은 값이있을 것이며, 그 중 어느 것도 명확하게 수정 된 값이되는 것보다 20 명당 부분이 아닙니다. 의미 적으로 전환 float 에게 double 좁은 전환으로 간주되어야합니다 (컴파일러가 정보가없는 정보에 대한 "추측"이 필요하기 때문에) 그러나 실질적인 어려움은 그 방향으로 '확대'로 전환하는 것을 정당화 할 수 있습니다.

아마도 Microsoft가 확대 전환을 추가하기 위해 청원해야 할 것입니다. double 에게 float? 그래픽 좌표를 다음과 같이 계산하는 코드가 이유는 없습니다. double 도면 기능을 호출 할 때 타입 캐스트와 어울려야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top