AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~

[已解決]請問在實數轉字串rtos如何設定四捨五入 或是無條件捨去進入

上一篇主題 下一篇主題 向下

[已解決]請問在實數轉字串rtos如何設定四捨五入 或是無條件捨去進入

發表 由 swcforest 于 2009-11-03, 16:12

(setq p1 (getpoint "請輸入左下角點:"))
(setq aa 3.82)
(setq bb 2.2)
(setq cc (* aa bb))
(setq txt (strcat "cc=" (rtos aa 2 2) "*" (rtos bb 2 2) "=" (rtos cc 2 2)))
(command "text" "bc" p1 2.5 0 txt)
若是我要無條件進位 或是無條件捨去 四捨五入
有哪邊需要修改
請各位大大指導


swcforest 在 2009-11-05, 01:15 作了第 1 次修改

swcforest
初級會員
初級會員

文章總數 : 104
年齡 : 38
來自 : 台中市南區
職業 : 土木工程設計
愛好 : 遊山玩水及AutoLISP
個性 : 開朗活潑
使用年資 : 六七年了
使用版本 : AutoCAD 2016
積分 : 1
經驗值 : 3652
威望值 : 13
注冊日期 : 2008-07-27
男 天秤座 羊

回頂端 向下

回復: [已解決]請問在實數轉字串rtos如何設定四捨五入 或是無條件捨去進入

發表 由 張譽璋 于 2009-11-03, 23:26

以下這兩行改為如下所示:
(setq aa (fix 3.82))
(setq bb (fix 2.2))
或是改為如下方這行也可以
(setq txt (strcat "cc=" (rtos (fix aa) 2 2) "*" (rtos (fix bb) 2 2) "=" (rtos (fix cc) 2 2)))

fix這個函數功用就是將實數無條件捨入為整數。
另外補充兩個部份
(setq aa (+ (fix 3.82) 1));此寫法為強制進位。
(setq aa (rtos 3.84 2 1));此寫法為四捨五入。

張譽璋
榮譽顧問
榮譽顧問

文章總數 : 303
年齡 : 47
來自 : 彰化縣員林鎮
職業 : 機械設計工程師/AutoCAD講師/AutoCAD外掛系統開發/AutoCAD書籍作者
愛好 : 旅行及電影
個性 : 風趣健談
使用年資 : 25年
使用版本 : AutoCAD2010/2011/2012/2013
積分 : 20
經驗值 : 4969
威望值 : 624
發帖精華 : 2
回帖精華 : 1
注冊日期 : 2008-05-28
藍鵲12號
男 處女座 狗

回頂端 向下

回復: [已解決]請問在實數轉字串rtos如何設定四捨五入 或是無條件捨去進入

發表 由 swcforest 于 2009-11-04, 07:05

不好意思 我表達的不清楚
因為一般我的工作是以土木工程為主
在繪圖時 的單位為公尺
因此我在表示的時候通常都在
小數點以下兩位 來代表
大大所提供的方法是以整數為主
我想要的結果是
3.826 => 3.82(無條件捨去) or 3.83(四捨五入及無條件進位)
再請大大指導一下

swcforest
初級會員
初級會員

文章總數 : 104
年齡 : 38
來自 : 台中市南區
職業 : 土木工程設計
愛好 : 遊山玩水及AutoLISP
個性 : 開朗活潑
使用年資 : 六七年了
使用版本 : AutoCAD 2016
積分 : 1
經驗值 : 3652
威望值 : 13
注冊日期 : 2008-07-27
男 天秤座 羊

回頂端 向下

回復: [已解決]請問在實數轉字串rtos如何設定四捨五入 或是無條件捨去進入

發表 由 張譽璋 于 2009-11-04, 08:11

(rtos 3.826 2 2);四捨五入
(substr (rtos 3.826 2 3) 1 4);強制捨去
但是這樣的寫法是固定值時行的通,如果採隨機輸入時,程式會變的更複雜,就不可以採用此方式。

你可以試試下列程式範例:
代碼:
(defun c:tst (/ p1 aa bb cc nn tx)
  (setq p1 (getpoint "\n文字放置點:"))
  (setq aa (getreal "\n輸入長度值:"))
  (setq bb (getreal "\n輸入寬度值:"))
  (setq cc (* aa bb))
  (setq cc (rtos cc 2 3))
  (setq nn (strlen cc))
  (setq cc (substr cc 1 (- nn 1)))
  (setq tx (strcat (rtos aa 2 2) "x" (rtos bb 2 2) "=" cc))
  (command "text" p1 "5" "0" tx)
  (princ)
)
這是可以隨機輸入的方法

張譽璋
榮譽顧問
榮譽顧問

文章總數 : 303
年齡 : 47
來自 : 彰化縣員林鎮
職業 : 機械設計工程師/AutoCAD講師/AutoCAD外掛系統開發/AutoCAD書籍作者
愛好 : 旅行及電影
個性 : 風趣健談
使用年資 : 25年
使用版本 : AutoCAD2010/2011/2012/2013
積分 : 20
經驗值 : 4969
威望值 : 624
發帖精華 : 2
回帖精華 : 1
注冊日期 : 2008-05-28
藍鵲12號
男 處女座 狗

回頂端 向下

回復: [已解決]請問在實數轉字串rtos如何設定四捨五入 或是無條件捨去進入

發表 由 swcforest 于 2009-11-05, 01:12

感謝老師提供方法
我會好好思考
再次感謝老師

swcforest
初級會員
初級會員

文章總數 : 104
年齡 : 38
來自 : 台中市南區
職業 : 土木工程設計
愛好 : 遊山玩水及AutoLISP
個性 : 開朗活潑
使用年資 : 六七年了
使用版本 : AutoCAD 2016
積分 : 1
經驗值 : 3652
威望值 : 13
注冊日期 : 2008-07-27
男 天秤座 羊

回頂端 向下

回復: [已解決]請問在實數轉字串rtos如何設定四捨五入 或是無條件捨去進入

發表 由 Tiger&蘋果爸 于 2009-11-05, 08:00

swcforest 寫到:感謝老師提供方法
我會好好思考
再次感謝老師
我也學到了~
真的很感謝!!
認同

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17328
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 65336
威望值 : 12868
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

上一篇主題 下一篇主題 回頂端


 
這個論壇的權限:
無法 在這個版面回復文章