tm20038175 发表于 2011-6-26 00:27:54

数字偏差问题

这个程序,n从47开始就有个偏差,明明*910,可是得出的结果却是*911,奇怪,为什么自动把910变成911了呢?



(defun c:f1 ()
(setq n 0)
(repeat320
(jn_frame1 n)
    (princ (strcat"\nn is :") ) (princ n)
    (princ (strcat"        frame is :") ) (princ frame)
(setq n (+ n 1))

   )
)
(defun jn_frame1 (n)
(if (<= n 47) (setq frame(* n 800)))
(if (and (> n 47)(<= n 305))
       (progn
      (setq frame0 (* 47 800))(setq frame1(- n 47))(setq frame2 (* frame1 910))
      (setq frame (+ frame0 frame1 frame2))
      ;(princ (strcat"\nframe is :") ) (princ frame)
      )
      )
(if (> n 305)
      (progn
                (setq frame0 (* 47 800))(setq frame1(- 305 47) )(setq frame2(* frame1 910) ) (setq frame3(- n 305) )(setq frame4(* frame3 800) )
              (setq frame (+ frame0 frame1 frame2 frame3 frame4))
          ;(princ (strcat"\nframe is :") ) (princ frame)
          )
      )


)

ljpnb 发表于 2011-6-26 05:58:36

本帖最后由 ljpnb 于 2011-6-26 06:04 编辑


(defun c:f1 ()
(setq n 0)
(repeat 320
    (jn_frame1 n)
    (princ (strcat "\nn is :"))
    (princ n)
    (princ (strcat "      frame is :"))
    (princ frame)
    (setq n (+ n 1))
)
(princ)
)
(defun jn_frame1 (n)
(if (<= n 47)
    (setq frame (* n 800))
)
(if (and (> n 47) (<= n 305))
    (progn
      (setq frame0 (* 47 800))
      (setq frame2 (* (- n 47) 910))
      (setq frame (+ frame0 frame2))
    )
)
(if (> n 305)
    (progn
      (setq frame0 (* 47 800))
      (setq frame2 (* (- 305 47) 910))
      (setq frame4 (* (- n 305) 800))
      (setq frame (+ frame0 frame2 frame4))
    )
)
)

tm20038175 发表于 2011-6-26 10:04:26

回复 ljpnb 的帖子

果然是高手,问题被找出来了,哈哈!
非常感谢!……………
页: [1]
查看完整版本: 数字偏差问题