springwillow 发表于 2015-3-12 21:46:46

数值计算小数位的省略

本帖最后由 springwillow 于 2015-3-12 21:51 编辑

无意中发在lisp在进行+运算时,小数位有时显示不准确。如:(+ 157000.0 157.0 1.57 1.57 1.57 157.0 157.0),计算结果显示为157476.0,并不显示成157475.71。而用(rtos (+ 157000.0 157.0 1.57 1.57 1.57 157.0 157.0)2 2)则显示为"157475.71"。数值计算为什么会出现这种情况呢?肯请高手解释

Gu_xl 发表于 2015-3-12 21:50:23

眼见为虚!若要打印显示多位,请使用rtos函数将实数显示多位字符!

wzg356 发表于 2015-3-12 21:50:58

显示的不是实际的,不影响准确性

springwillow 发表于 2015-3-12 21:56:07

wzg356 发表于 2015-3-12 21:50 static/image/common/back.gif
显示的不是实际的,不影响准确性

但是会影响输出结果的准确性。(vl-princ-to-string (+ 157000.0 157.0 1.57 1.57 1.57 157.0 157.0))显示出的结果也有问题

springwillow 发表于 2015-3-12 21:58:33

Gu_xl 发表于 2015-3-12 21:50 static/image/common/back.gif
眼见为虚!若要打印显示多位,请使用rtos函数将实数显示多位字符!

使用rtos需要知道后面小数的位数才能准确显示,本来想是用vl-princ-to-string函数直接转成文本的,不做小数位数判断。G版有没有妙方?

springwillow 发表于 2015-3-12 22:14:18

用了个笨方法来解决(if (= (setq ll (- txt (fix txt))) 0)
      (setq txt (vl-prin1-to-string (fix txt)))
      (setq txt (strcat (vl-prin1-to-string (fix txt)) (vl-string-left-trim "0" (vl-prin1-to-string ll)))))

Gu_xl 发表于 2015-3-13 09:50:35

springwillow 发表于 2015-3-12 21:58 static/image/common/back.gif
使用rtos需要知道后面小数的位数才能准确显示,本来想是用vl-princ-to-string函数直接转成文本的,不做小 ...

请仔细学习研究下系统变量DIMZIN,再结合Rtos!
页: [1]
查看完整版本: 数值计算小数位的省略