明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4366|回复: 14

请问如何判断一个数的小数部分的位数?

  [复制链接]
发表于 2006-7-28 12:04:00 | 显示全部楼层 |阅读模式

请问如何判断一个数的小数部分的位数?

如:1.123 时,返回3。

       1.0时,返回1。

        1时,返回0。

发表于 2024-7-9 14:52:20 | 显示全部楼层
lazybug 发表于 2006-7-28 16:32
(defun c:test (/ a tt n)    (setq a 1.0)    (setq tt (vl-prin1-to-stri ...

谢谢解答!收用了!
发表于 2006-7-28 12:59:00 | 显示全部楼层

无法判断。如果只判断尾数,则1.0与1相同,当1是整数时,可以用判断数据类型的方法直接返回0。

发表于 2006-7-28 16:12:00 | 显示全部楼层

vl-prin1-to-string

先转换成字符串再处理

不过对于1.00、1.1230之类返回的值还是“1.0”、“1.123”

发表于 2006-7-28 16:13:00 | 显示全部楼层

如果是:"1.123 时,返回3。

       "1.0" 时,返回1。

        "1" 时,返回0。
即成

 

发表于 2006-7-28 16:32:00 | 显示全部楼层
(defun c:test (/ a tt n)
    (setq a 1.0)
    (setq tt (vl-prin1-to-string a))
    (if (setq n (vl-string-position 46 tt))
 (setq n (- (strlen tt) n 1))
 (setq n 0)
    )
)
发表于 2006-7-28 20:11:00 | 显示全部楼层

大家请看这样是否可以:

1)先把实数转化成字符串这是一定的(seq b(rtos a 2 16))

2)判断小数点的位置:(setq c (vl-string-position (ascii ".")  b))

3)截掉整数部分:(setq d (substr b 1 (1+ c)))

4取剩余部分的长度,(setq n (strlen d))

50,ok!

 

 

发表于 2006-7-28 20:14:00 | 显示全部楼层

完整的程序就不写了

发表于 2006-7-29 13:07:00 | 显示全部楼层
谁能区分1.25和1.250?
发表于 2006-7-29 16:43:00 | 显示全部楼层

我认为,(setq a 1.25)跟(setq a 1.250)是等价的

应该是区分不开的

发表于 2006-7-30 09:00:00 | 显示全部楼层
1.25 与1.250如果是real,哪没什么意思,如果是string,就用楼上的提供的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 13:24 , Processed in 0.180953 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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