Вопрос

Когда я делаю (/ 7 2), что мне сделать, чтобы получить результат 3?Если я это сделаю (/7 2.0), я получу 3.5, что и ожидалось.

Это было полезно?

Решение

Другие советы

Видеть ПОЛ, ПОТОЛОК И ОБРЕЗКА в 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

Обычно для деления на целое число используется TRUNCATE.

Вы можете использовать floor функция:

(floor 7 2)
3
1

Обратите внимание, что он возвращает несколько значений, и вам понадобится только первое.С floor возвращает несколько значений, это можно сделать с помощью multiple-value-bind следующее:

(multiple-value-bind (q r) (floor 7 2) q)
=> 3

Редактировать: Как отмечает Райнер в своем комментарии, вы можете просто передать результат floor в качестве аргумента, если все, что вам нужно, это частное.

[1]> (floor 7 2)
3 ;
1
[2]> (+ (floor 7 2) 5)
8
[3]>

ссылку оставляю multiple-value-bind в ответе, поскольку это важная функция, с которой необходимо ознакомиться.

Использовать floor функция.В СБКЛ:

* (floor (/ 7 2))

3
1/2

Возвращаются два значения: целая часть и дробная часть.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top