找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2390|回复: 18

[1112]如何判读出一个小数点后面有几个数字呢?

[复制链接]
发表于 2006-11-12 21:59:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
[1112]如何判读出一个小数点后面有几个数字呢?
如数值为 25.51243
希望可以返回 5
代表小数后五位

请问各位该怎样解决
烦请帮忙一下
谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-11-12 22:12:05 | 显示全部楼层
(1- (length
      (member 46 (vl-string->list (rtos real 2 100)))
    )
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2006-11-12 22:51:58 | 显示全部楼层
最初由 fsxm 发布
[B](1- (length
      (member 46 (vl-string->list (rtos real 2 100)))
    )
) [/B]

先要设一下dimzin


  1. (defun wwww (k / j)
  2. (setq j 0)
  3. (while (>= (- k (fix k))0.1)
  4.    (setq j (1+ j) k(* 10 k))
  5. ) j
  6. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-13 01:28:00 | 显示全部楼层
(wwww 232.320043) ->2
楼上的算法是错误的.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-13 08:57:25 | 显示全部楼层
3楼的算法只适合正数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-13 19:06:23 | 显示全部楼层
现在还有一个问题会发生就是当使用cal命令计算时出现的精度不一样
指令: CAL
>> 表示式: 79.64/3
26.546666666667

指令: (/ 79.64 3.0)
26.5467

指令: (CAL "79.64/3.0")
26.5467

为何会有这样的结果产生呢?
有人可以解答一下吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7329个

财富等级: 富甲天下

发表于 2006-11-13 20:07:37 | 显示全部楼层
Command: (/ 79.64 3.0)
26.5467

Command: (rtos (/ 79.64 3.0) 2 16)
"26.54666666666667"

Don't worry!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-13 21:54:01 | 显示全部楼层
  1. [FONT=courier new]
  2. (defun wwww (k / j)
  3.   (setq j 0)
  4.   (while (> (- k (fix k)) 0)
  5.     (setq j (1+ j)
  6.           k (* 10 k)
  7.     )
  8.   )
  9.   j
  10. )[/FONT]

测试:
_$ (wwww 232.320043)
6
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-11-13 22:05:40 | 显示全部楼层

  1. (defun wwww (real)
  2.   (1- (length
  3.         (member        46
  4.                 (vl-string->list
  5.                   (vl-string-right-trim "0" (rtos real 2 100))
  6.                 )
  7.         )
  8.       )
  9.   )
  10. )

不用fix之理由: real的取值远大于int,所以不是每一个real都可以用fix
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-13 22:30:59 | 显示全部楼层
谢谢各位的解答
不过好像还是有些问题,
因为小数无法超过某个限定值
如: xyp1964  版大的程序如果用

(setq k 123.12345678901234567890)

返回
_$  1.23123e+016

fsxm 楼主的 返回为
_$ 13

但如果是这样
(setq STR "123.12345678901234567890")
(SETQ STPTNB (- (STRLEN STR) (1+ (vl-string-search "." STR))))
_$ 20
返回是正常的
所以问题应该是在于实数转字串上发生问题
而(rtos 8) 好像也只能到 13 位数
不知道是不是一个软体上面的问题呢?

小算盘在计算时也小数点也可以超过12位以上~
真是厉害~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-11-13 23:09:21 | 显示全部楼层
(setq k 123.12345678901234567890)
??????????
以这种精度CAD是没法计算到的!当然上面的程序全部出错~
要不来个计算pi的小数位就是windos小算盘也算不出来啊!
这不是程序问题了是CAD的浮点运算精度问题了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-14 06:26:42 | 显示全部楼层
最初由 fsxm 发布
[B](setq k 123.12345678901234567890)
??????????
以这种精度CAD是没法计算到的!当然上面的程序全部出错~
要不来个计算pi的小数位就是windos小算盘也算不出来啊!
这不是程序问题了是CAD的浮点运算精度问题了 [/B]



不懂楼主说的出错
可以说明一下吗
谢谢~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-15 12:31:09 | 显示全部楼层
(rtos (- pi 3) 2 100)就知道了。最多16小数。。。
任何程序都有精度的,包括window

(rtos r 2 100)会有精度上的bug,(rtos 0.1234 2 100)="0.1233999999999999"

  1.   [FONT=courier new]
  2. ;;; 将字符串转换为字符代码表,也适合R14
  3. (defun Chengs_vl-string->list (string / char char-codes-list i)
  4.   (setq i 1
  5.         char-codes-list '()
  6.   )
  7.   (repeat (strlen string)
  8.     (setq char (ascii (substr string i 1))
  9.           char-codes-list (append
  10.                             (list char)
  11.                             char-codes-list
  12.                           )
  13.           i (1+ i)
  14.     )
  15.   )                                     ; endrepeat
  16.   (reverse char-codes-list)
  17. )
  18. ;;; endfun
  19. ;;; eg (chengs_vl-string->list "123")=(49 50 51)
  20. ;;; 小数位个数
  21. (defun Chengs_DecNum (r / ct)
  22.   (setq ct (1- (length (member 46 (chengs_vl-string->list (rtos r 2 16))))))
  23.   (if (< ct 0) (setq ct 0))
  24.   ct
  25. );endfun
  26. ;;; eg (chengs_DecNum pi) = 15

  27.     [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-15 19:21:51 | 显示全部楼层
看来是只有这样的精度了
谢谢各位高手的解答
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-15 20:25:16 | 显示全部楼层
刚刚编了一个,希望能满足你的要求
但是必须是选择的一个文字。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-21 01:54 , Processed in 0.488527 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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