乐筑天下

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

[编程交流] 我如何将数字归集到整数

[复制链接]

5

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:05:24 | 显示全部楼层 |阅读模式
我需要在我的LISP例程中总是把一个数字四舍五入。fix命令似乎只是四舍五入。
 
我需要所有带有任意小数点的数字总是向上取整到下一个偶数。例如:
4.1-四舍五入至5
5.8-四舍五入到6
3.00000000000001-四舍五入到4
2.00-保持不变;不归位。
 
我怎样才能轻松做到这一点?
提前感谢您的帮助。
 
如果需要,请提供更多信息:
 
我在做一个楼梯Lisp程序的动作,我把楼层高度除以7.3/4英寸的最大立管高度。然后这给了我一个立管的数量,需要四舍五入到下一个偶数。然后我取这个数字,除以楼层高度的差来创建我的立管。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 18:22:55 | 显示全部楼层
对于正数,可能:
 
  1. (if (/= (fix n) n)
  2.    (setq n (1+ (fix n))))

 
-大卫
回复

使用道具 举报

5

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:34:56 | 显示全部楼层
 
非常感谢。然而,我最终使用了李·麦克的帖子中的代码。以下是我使用的:
 
  1. ;;; Q is my variable that I needed round up
  2. (defun ROUND ( n m )
  3.    (cond
  4.        ((equal 0.0 (rem n m) 1e- n)
  5.        ((< n 0) (- n (rem n m)))
  6.        ((+ n (- m (rem n m))))
  7.    )
  8. )
  9. (setq B (ROUND Q 1))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:46:40 | 显示全部楼层
仅针对变量,这里有另一个仅适用于正整数的变量:
  1. (defun LM:int:roundup1 ( n ) (fix (+ n 1 -1e-))
  1. _$ (LM:int:roundup1 2.1)
  2. 3

对于四舍五入到任意倍数:
  1. (defun LM:int:roundup ( n m ) (* m (fix (+ (/ n (float m)) 1 -1e-)))
  1. _$ (LM:int:roundup 4.3 2)
  2. 6
回复

使用道具 举报

5

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:59:30 | 显示全部楼层
你真棒,好先生。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:05:48 | 显示全部楼层
非常感谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 23:44 , Processed in 0.425607 second(s), 64 queries .

© 2020-2025 乐筑天下

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