나는이 표현이 : 나는 부동 소수점 비트 제거합니까 그것은 내가 형을 정수로 변환 어떻게 단지 1을 생산 얼마나라켓에서 부동 소수점을 제거하는 방법?
#i1.0
: 평가
(floor (sqrt 2))
. 나는 문서를 보았지만 아무 것도 발견하지 못했다. 감사.
나는이 표현이 : 나는 부동 소수점 비트 제거합니까 그것은 내가 형을 정수로 변환 어떻게 단지 1을 생산 얼마나라켓에서 부동 소수점을 제거하는 방법?
#i1.0
: 평가
(floor (sqrt 2))
. 나는 문서를 보았지만 아무 것도 발견하지 못했다. 감사.
몇 가지 방법으로 @Alexis는 inexact->exact
을 지적 할 것입니다. 그러나 floor
을 사용하면 racket/math
(#lang racket
프로그램에 기본적으로 포함되어 있음)으로 제공되는 더욱 쉬운 솔루션 인 exact-floor
이 있습니다.
이 함수는 floor와 동일한 의미를 갖지만, 한 가지 예외는 정확하지 않은 숫자가 아닌 예외입니다. 물론
> (floor 1.2)
1.0
> (exact-floor 1.2)
1
, 그 +inf.0
및 +nan.0
(및 관련 변종) 이후에만 부동 소수점 숫자를 더 정확한 아날로그가없는 점에 유의하는 것이 중요합니다, 당신은 그 캐스팅 할 수 없습니다 :
> (floor +inf.0)
+inf.0
> (exact-floor +inf.0)
; exact-floor: contract violation
; expected: rational?
; given: +inf.0
; [,bt for context]
을
기본적으로 floor
함수는 real?
숫자로 작동하고 exact-floor
함수는 rational?
숫자로 작동합니다. 그러나 정확하지 않은 경로를 사용하는 경우에도 동일한 제한이 적용됩니다.
'부정확 -> 정확한'. –
고맙습니다. 그게 전부 야. – mtheorylord