明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3445|回复: 29

请编程师们指点一下

  [复制链接]
发表于 2011-6-15 09:48:42 | 显示全部楼层 |阅读模式
刚刚开始学习,我自己写了一点程式,但在运行时出了点问题,当字符串转换成实数时小数点的位数发生变化了,本来是2位数结果变成了1位数,而且数值也变了,成了四舍五入了,我想小数点后面仍保留2位,数值也不要发生任何变化,我该怎么做?请编程师们指点迷津!程式如下:(setq bb(getpoint))
(setq qq(nth 0 bb))
(setq qq1(substr (rtos qq) 6 2))
(setq qq2(substr (rtos qq) 1 5))
(setq a ".")
(setq n (strcat qq2 a qq1))
    (distof n)


运行结果如下:(setq bb(getpoint))
(setq qq(nth 0 bb))
(setq qq1(substr (rtos qq) 6 2))
(setq qq2(substr (rtos qq) 1 5))
(setq a ".")
(setq n (strcat qq2 a qq1))
    (distof n)
(3.61222e+008 1.62138e+008 0.0)
3.61222e+008
"16"
"36122"
"."
"36122.16"
36122.2
正确值应该是36122.16  而转换后的值变成了36122.2   ?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-6-15 09:52:29 | 显示全部楼层
(rtos qq)改成(rtos qq 2 2)
发表于 2011-6-15 09:53:55 | 显示全部楼层
(setq bb (getpoint))
(setq qq (car bb))
(setq n (rtos qq 2 2))
(princ "\n")
(princ n)
 楼主| 发表于 2011-6-15 10:25:41 | 显示全部楼层
ZZXXQQ :还是不行啊!您的程式和我的思路不太相同,我的意思是假如点取的坐标值是39578617.123那么我要将这个值变为39578.61(前面要5位数,然后是小数点,后面在保留2为小数)
我运行了(rtos qq)改成(rtos qq 2 2)
结果还是$ (setq bb(getpoint))
(setq qq(nth 0 bb))
(setq qq1(substr (rtos qq 2 2) 6 2))
(setq qq2(substr (rtos qq 2 2) 1 5))
(setq a ".")
(setq n (strcat qq2 a qq1))
           (distof n)
(3.61222e+008 1.62138e+008 0.0)
3.61222e+008
"16"
"36122"
"."
"36122.16"
36122.2
请问如何将"36122.16"转变为36122.16而不是36122.2
发表于 2011-6-15 11:29:11 | 显示全部楼层
本帖最后由 Andyhon 于 2011-6-27 17:13 编辑

坐标值是39578617.123那么我要将这个
  值变为39578.61 ...
  
(setq bb (getpoint))
(setq qq (/ (car bb) 1000))
(setq qq2 (substr (rtos qq) 1 8))
 楼主| 发表于 2011-6-15 17:09:45 | 显示全部楼层
点取坐标点后返回值是(3.95893e+007 4.15075e+006 0.0),并不是实数啊?
发表于 2011-6-15 19:33:08 | 显示全部楼层
建议上传您的图文件(*.dwg)
依实例来探讨,可排除不同工作环境设定的岐义
 楼主| 发表于 2011-6-27 15:10:18 | 显示全部楼层
实在不好意思,出差了这么久,刚刚回来,现在把图上传,图中圆心部分的端点坐标,在vlisp当中返回的坐标值是(setq bb (getpoint))
(setq qq (/ (car bb) 1000)
(setq qq2 (substr (rtos qq) 1 8))
(3.95851e+007 4.1443e+006 0.0)
 楼主| 发表于 2011-6-27 16:26:16 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2011-6-27 16:37:52 | 显示全部楼层
Command: !bb
(3.95851e+007 4.1443e+006 0.0)      ; Scientific
Command: (rtos (car bb) 2 16)
"39585059.60300001"
Command: (rtos (cadr bb) 2 16)
"4144296.106000000"

Ref: LUnits  的帮助

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-9-24 04:51 , Processed in 0.224140 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表