我想用我的球拍程序来加速它的速度。我的程序使用矩阵数据类型对矩阵进行操作。有人建议我使用数据类型Fixnum。
我有一些矩阵,
(: X (Matrix Fixnum)) (define X (matrix [[0 1] [2 3]] : Fixnum))
这也没问题。
然而,如果矩阵中的数字有小数,我就会得到一个错误。
(: Y (Matrix Fixnum)) (define Y (matrix [[0 0.5] [1.5 2.5]] : Fixnum))
类型检查器:类型错配 预期: Fixnum 给予:正数-Flonum in: 0.5
Fixnum是一种机器类型(我不完全理解这是什么;不确定它是否相关)。我知道固定位限制在64位。但是为什么0.5 (或任何小数,似乎)不能是一个Fixnum呢?
发布于 2015-12-27 10:14:43
请阅读文档(http://docs.racket-lang.org/reference/numbers.html)。以下是一段节选:
fixnum是一个精确的整数,它的两个补表示在32位平台上适合31位,在64位平台上适合63位。
所以,不,fixnum是整数。
请注意,0.5和1/2的球拍是不同的。0.5是Flonum,1/2是精确的-Rational。
顺便说一句,我认为你没有必要提到“矩阵”。以下代码只会导致类型错误。
#lang typed/racket
(: X Fixnum)
(define X 0.5)这是最好的,当你试着理解一个程序,尽可能地削减程序,以便你可以很容易地了解正在发生的事情。
https://stackoverflow.com/questions/34478102
复制相似问题