明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 433|回复: 6

[提问] trans 命令为何得出是科学记数的值?

[复制链接]
发表于 2022-8-8 08:38 | 显示全部楼层 |阅读模式
本帖最后由 mokson 于 2022-8-8 08:40 编辑

我用UCS坐标变换:
(trans '(0 0 0) 0 1)

得出的值是:
(-9.09495e-13 0.0 -2.5)
为什么会得出一个科学记数法的值呢?

按我的实际情况,应该是 (0.0  0.0  -2.5)才对呀。
为什么会这样,知情的解释一下。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-8-8 08:51 | 显示全部楼层
精度问题,-9.09495e-13也算是0了
发表于 2022-8-8 09:03 | 显示全部楼层
自贡黄明儒 发表于 2022-8-8 08:51
精度问题,-9.09495e-13也算是0了

黄总说的是,这个是精度计算的问题。在数学软件mapple输入cos(pi/2)也不等于0,而是一个非常非常小的数。这应该都是软件精度计算产生的
发表于 2022-8-8 09:05 | 显示全部楼层
本帖最后由 llsheng_73 于 2022-8-8 10:31 编辑

严格来说,除了整数,计算机无法准确表达一个实数,当然也有少数例外
只有能用n个2的(负)整数次幂表达的才可能被计算机准确表示,只是有可能,主要是因为位数限制
发表于 2022-8-8 10:12 | 显示全部楼层
llsheng_73 发表于 2022-8-8 09:05
严格来说,除了整数,计算机无法准确表达一个实数,当然也有少数例外

确实如此,用2的多少次幂表示一个十进制数,会有误差。也有正好的
 楼主| 发表于 2022-8-8 14:11 | 显示全部楼层
能有方法让它显示为 0 吗,不以这种复杂的方式显示。
发表于 2022-8-12 18:40 | 显示全部楼层
mokson 发表于 2022-8-8 14:11
能有方法让它显示为 0 吗,不以这种复杂的方式显示。

人为修正一下 后边的精度可以自己设置
(MAPCAR '(LAMBDA(X) (IF (EQUAL X 0 0.000000001) 0.0 X)) (trans '(0 0 0) 0 1))

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

本版积分规则

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

GMT+8, 2024-4-23 17:57 , Processed in 0.194206 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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