문제
내가 할 때 (/ 7 2)
, 결과를 얻으려면 어떻게해야합니까? 3
? 내가한다면 (/ 7 2.0) 3.5
, 예상대로.
해결책
(floor 7 2)
ref : http://rosettacode.org/wiki/basic_integer_arithmetic#common_lisp
다른 팁
보다 바닥, 천장 및 잘림 ANSI Common LISP에서.
예제 (양수 및 음수 참조) :
CL-USER 218 > (floor -5 2)
-3
1
CL-USER 219 > (ceiling -5 2)
-2
-1
CL-USER 220 > (truncate -5 2)
-2
-1
CL-USER 221 > (floor 5 2)
2
1
CL-USER 222 > (ceiling 5 2)
3
-1
CL-USER 223 > (truncate 5 2)
2
1
일반적으로 분열에서 정수 자궁 절반이 사용됩니다.
당신은 사용할 수 있습니다 floor
기능:
(floor 7 2)
3
1
여러 값을 반환하고 첫 번째 값 만 필요합니다. 부터 floor
수행 할 수있는 여러 값을 반환합니다 multiple-value-bind
다음과 같이 :
(multiple-value-bind (q r) (floor 7 2) q)
=> 3
편집하다: Rainer가 그의 의견에서 언급 한 것처럼, 당신은 결과를 전달할 수 있습니다. floor
필요한 모든 것이 몫입니다.
[1]> (floor 7 2)
3 ;
1
[2]> (+ (floor 7 2) 5)
8
[3]>
나는 참조를 남기고있다 multiple-value-bind
대답에서, 친숙한 것은 중요한 기능이기 때문에.
사용 floor
기능. SBCL에서 :
* (floor (/ 7 2))
3
1/2
정수 부품과 분수 부품의 두 값이 반환됩니다.
제휴하지 않습니다 StackOverflow