その場合(/ 7 2)
、結果を得るにはどうすればよい3
ですか? (/ 7 2.0) を実行3.5
すると、予想どおり が得られます。
質問する
14807 次
4 に答える
26
(floor 7 2)
参照: http://rosettacode.org/wiki/Basic_integer_arithmetic#Common_Lisp
于 2010-01-16T09:40:01.623 に答える
21
ANSI Common Lisp のFLOOR、CEILING、および TRUNCATEを参照してください。
例 (正の数と負の数を参照):
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 が使用されます。
于 2010-01-16T11:54:42.520 に答える
7
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
よく知っておくべき重要な機能であるため、回答に参照を残しています。
于 2010-01-16T09:40:30.113 に答える
3
機能を使用してくださいfloor
。SBCL では:
* (floor (/ 7 2))
3
1/2
整数部分と小数部分の 2 つの値が返されます。
于 2010-01-16T09:39:30.827 に答える