关于用表达式定义变量的问题
一般可用(setq valName 1.123456789)的形式达定义变量的值。现在我想用表达式来定义变量,即前面的valName是可变的(可以由程序使用者自行命名),当然这个变量的值也可以自行定义,然后做成一个子程序。(eval (read (strcat "(setq " varName " " (rtos varValue 2 5) " )")))这句基本可以达到我的要求,但这一语句中对于变量值varValue需要转换为字符串,这就使得在计算中可能产生不可忽略的误差。各位老大可否帮我优化一下?谢谢!!!
_$ (setq varName "a")
"a"
_$ (setq varValue 1.123456789)
1.12346
_$ (eval (read (strcat "(setq " varName " " (rtos varValue 2 5) " )")))
1.12346
_$ a
1.12346
_$ (+ a 1)
2.12346
(vl-princ-to-string varValue) aihuyujian 发表于 2015-1-16 22:29 static/image/common/back.gif
(vl-princ-to-string varValue)
谢谢,但这个貌似也是先将数字做成字符串,但由该字符串还原成数字时就会丢失精度。有没有其它办法能保证精度吗? 用 set 函数
页:
[1]