乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 63|回复: 14

[编程交流] Autolisp中的小数和数学

[复制链接]

8

主题

29

帖子

21

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 17:18:30 | 显示全部楼层 |阅读模式
嗨,论坛。
 
这是一个实践代码,作为参考,我在旁边有excel计算。
 
问题
 
1.autocad输出中缺少小数(“rtos或.0”用于获取我知道的小数,但不知道如何在这里实现。我得到了错误)
 
2.在这种情况下,计算结果不符合68岁以上的年龄。
 
  1. (defun C:mathfun()
  2. (setq intAge (getint "\n Enter Your Age : "))
  3.         (setq intdays (* intage 365))
  4.                 (setq intweeks ( / intdays 7))
  5.                         (setq intmonths ( / intdays 30))
  6.                                 (setq inthours (* intdays 24))
  7.                                         (setq intmins (* inthours 60))
  8.                                                 (setq intsecs (* intmins 60))
  9.         (princ (strcat "\n You are " (itoa intdays) " Days Old!"))
  10.                 (princ (strcat "\n Your are " (itoa intweeks) " Weeks Old!"))
  11.                         (princ (strcat "\n Your are " (itoa intmonths) " Months Old!"))
  12.                                 (princ (strcat "\n Your are " (itoa inthours ) " Hours Old!"))
  13.                                         (princ (strcat "\n Your are " (itoa intmins ) " Minutes Old!"))
  14.                                                 (princ (strcat "\n Your are " (itoa intsecs ) " Seconds Old!"))
  15. (Princ)
  16. )

 
非常感谢。
181835kit2ri6zjz68ui62.jpg
年龄代码。图纸
回复

使用道具 举报

8

主题

29

帖子

21

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 17:23:10 | 显示全部楼层
  1. (defun C:mathfun1()
  2. (setq intAge (getint "\n Enter Your Age : "))
  3.         (setq intdays (rtos (* intage 365.0) 2 )
  4.                 (setq intweeks (rtos ( / intdays 7.0) 2 )
  5.                         (setq intmonths (rtos ( / intdays 30.0) 2 )
  6.                                 (setq inthours(rtos (* intdays 24.0) 2 )
  7.                                         (setq intmins(rtos (* inthours 60.0) 2 )
  8.                                                 (setq intsecs( rtos (* intmins 60.0) 2 )
  9.         (princ (strcat "\n You are " (itoa intdays) " Days Old!"))
  10.                 (princ (strcat "\n Your are " (itoa intweeks) " Weeks Old!"))
  11.                         (princ (strcat "\n Your are " (itoa intmonths) " Months Old!"))
  12.                                 (princ (strcat "\n Your are " (itoa inthours ) " Hours Old!"))
  13.                                         (princ (strcat "\n Your are " (itoa intmins ) " Minutes Old!"))
  14.                                                 (princ (strcat "\n Your are " (itoa intsecs ) " Seconds Old!"))
  15. (Princ)
  16. )

 
我尝试使用rtos获取小数,但出现了错误。
 
Autocad命令行
 
命令:MATHFUN1
输入您的年龄:68岁
; 错误:错误的参数类型:numberp:“24820.00000000”
命令:
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:29:35 | 显示全部楼层
看看这个:
  1. (/ 6 3) => 2
  2. (/ 7 3) => 2
  3. (/ 7.0 3) => 2.33333
  4. (/ 7 3.0) => 2.33333
  5. (float 3) => 3.0
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:34:35 | 显示全部楼层
 
考虑用于每个表达式的数据类型:
 
rtos将数值转换为字符串。
itoa将整数转换为字符串。
 
算术计算中只能使用数值(请考虑intdays变量是字符串)。
 
从计算中删除rtos表达式,并在strcat表达式中用rtos替换itoa。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:39:27 | 显示全部楼层
考虑以下因素:
  1. (defun c:mathfun ( / age day )
  2.    (initget 6)
  3.    (if (setq age (getint "\nEnter your age: "))
  4.        (princ
  5.            (strcat "\nYou are: "
  6.                "\n" (itoa (setq day (* age 365))) " days old."
  7.                "\n" (rtos (/ day  7.0) 2)         " weeks old."
  8.                "\n" (rtos (/ day 30.0) 2)         " months old."
  9.                "\n" (itoa (* day 24))             " hours old."
  10.                "\n" (itoa (* day 24 60))          " minutes old."
  11.                "\n" (itoa (* day 24 60 60))       " seconds old."
  12.            )
  13.        )
  14.    )
  15.    (princ)
  16. )
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 17:40:06 | 显示全部楼层
哎呀,无视我之前的帖子。我没有正确阅读OP。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 17:47:38 | 显示全部楼层
Yuo可能还想研究(rtos)转换的sysvar DIMZIN
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:52:10 | 显示全部楼层
李有点搞笑(*365岁。有事)要考虑闰年。
 
22645.5或22630
回复

使用道具 举报

8

主题

29

帖子

21

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 17:57:05 | 显示全部楼层
181838rq5rj95rj27kyygk.jpg
 
李先生,非常感谢你给我展示了如何把事情做好
我将查找更多示例,以研究itoa和rtos
 
抱歉,出现了另一个问题,请在年龄超过68岁后查看所附图像。在autolisp中,年龄(秒)的输出错误,它们变为负值,并且是错误的值。
回复

使用道具 举报

8

主题

29

帖子

21

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 17:59:07 | 显示全部楼层
当然,大卫·贝瑟尔。谢谢你的指导。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 08:39 , Processed in 0.545397 second(s), 86 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表