Google Go 프로그래밍 언어의 수학 라이브러리 방법


9

나는 Google Golang으로 프로그래밍하고 있으며 그 간결함으로 인해 그것을 즐기고 있었지만 거의 모든 Math 표준 라이브러리 방법이 부동 소수점 유형이라는 것이 놀라운 사실입니다. 이 메소드가 int에 존재하지 않는 특별한 이유가 있습니까?

답변:


9

짧은 대답은 Go가 C의 후속 버전이며 C의 표준 수학 라이브러리는 거의 배정도 부동 소수점 값으로 만 정의됩니다.

더 긴 대답은 Go (또는 C)와 같이 다형성이나 함수 오버로드가없는 정적으로 유형이 지정된 언어에서 함수가 미리 가져오고 리턴 할 유형을 설정해야하며, 일단 처리하면 수학 라이브러리의 특정 유형에서 정수보다 부동 소수점 숫자에 대해 훨씬 더 흥미로운 연산이 있습니다. 몇 가지 예를 선택하려면

  • 정수 또는 부동 소수점 숫자의 제곱 또는 n 번째 루트는 일반적으로 정수로 표현할 수 없습니다

  • 초월 함수의 흥미로운 값은 정수로 표현할 수 있습니다.

  • 부동 소수점 값을 나누면 정수 나누기보다 반올림이 덜 필요합니다.

입력 값이 정수인 경우처럼 보일 수는 없습니다. 정수형 값은 간단한 타입 캐스트를 사용하여 부동 소수점 값으로 변환 할 수 있습니다.

Go 또는 C와 같은 언어에 대한 이야기입니다. 다른 언어에는 다른 옵션이 있습니다.

  • 동적으로 유형이 지정된 언어는 호출 대상 또는 반환 값이 정수로 표현 가능한지 여부에 따라 여러 유형을 가져 오거나 반환하는 수학 라이브러리 함수를 제공 할 수 있습니다.

  • 함수 오버로딩이있는 언어는 전달한 유형에 따라 동일한 버전의 동일한 버전을 여러 버전으로 제공 할 수 있습니다 (단, 위의 동적 유형의 경우와 달리 이름이 같은 여러 함수 임)

  • 상속이 가능한 객체 지향 언어와 같은 유형 다형성을 가진 언어는 정수 및 부동 소수점 값 모두에 대한 서브 클래스가있는 수퍼 클래스 "Number"를 정의한 다음이 Number 클래스와 관련하여 수학 함수를 정의 할 수 있습니다. 이 접근 방식은 동적 언어 접근 방식의 유연성을 크게 유지하면서 정적 또는 함수 오버로드 접근 방식의 엄격 성을 여전히 유지합니다.

그러나 Go에는 이러한 기능이 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.