私はこの表現を持っている:私は、浮動小数点ビットを取り除くか、それは私がそれを整数型に変換しないかだけの1を生産しているどのようにラケットで浮動小数点を取り除く方法は?
#i1.0
:と評価さ
(floor (sqrt 2))
。私はドキュメンテーションを見たが、何も見つからなかった。ありがとう。
私はこの表現を持っている:私は、浮動小数点ビットを取り除くか、それは私がそれを整数型に変換しないかだけの1を生産しているどのようにラケットで浮動小数点を取り除く方法は?
#i1.0
:と評価さ
(floor (sqrt 2))
。私はドキュメンテーションを見たが、何も見つからなかった。ありがとう。
@Alexisが指摘しているように、いくつかの方法でinexact->exact
がそれを行います。しかし、floor
を使用した場合、racket/math
(これはデフォルトで#lang racket
プログラムに含まれています)によって提供されるさらに簡単な解決方法exact-floor
があります。
この関数はfloorと同じセマンティクスを持ちますが、不正確な数ではなく正確な数値が生成されます。 +inf.0
と+nan.0
(および関連変異体は)唯一の浮動小数点数であり、何の正確なアナログを持っていないので、あなたがそれらをキャストすることはできないことに注意すべき
> (floor 1.2)
1.0
> (exact-floor 1.2)
1
、その重要:
> (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