开源改变世界

我们应该使用“小数”而不是“浮点数”吗? #987

推推 grbl 3年前 (2023-02-02) 205次浏览
打开
Harvie 打开了这个问题 2018 年 9 月 30 日 · 10 条评论
打开

我们应该使用“小数”而不是“浮点数”吗?#987

Harvie 打开了这个问题 2018 年 9 月 30 日 · 10 条评论

注释

我们应该使用“小数”而不是“浮点数”吗? #987
合作者
哈维 评论了 2018 年 9 月 30 日  

我刚刚听说过 python decimal https://docs.python.org/2/library/decimal.html
人们说它比 float 更适合精确的十进制计算,因为它不会做任何带有最小小数位的奇怪事情. 这可以帮助我们解决 bCNC 现在具有精度的 1e-7 问题,因为使用十进制类型你可以设置你想要的任何小数精度(小数位数没有限制,但你必须在开始计算之前说明它) . 但我不是 python 专家,也不是浮点魔术师。所以我想听听更多有经验的人对这个话题的看法。

这只是一个非常遥远的未来的想法。

有趣的话题:
https ://sixty-north.com/blog/the-folly-of-floating-point-for-robust-geometric-computation.html
https://www.itu.dk/~setoft/bachelor/IEEE754_article .pdf
https://www.youtube.com/watch?v=PZRI1IfStY0

我们应该使用“小数”而不是“浮点数”吗? #987

最大的问题是使用 decimal 会慢很多。我还猜测许多具有高效 CPU 浮点指令(sin、sqrt 等)的函数将具有较慢的 CPU 对应项。

我们应该使用“小数”而不是“浮点数”吗? #987
贡献者

@Harvie @toktuff
这些信息从何而来?

文件 1.py:

import math
print (math.sqrt(2))

sfinexer @ sfinexer: ~$ python 1.py
1.41421356237

精度高于1e-7

我们应该使用“小数”而不是“浮点数”吗? #987
贡献者
斯芬克斯 评论了 2018 年 9 月 30 日  

文件 1.py:

import math
print (math.sqrt(2))

y=1e11
y+=1
print y

sfinexer@sfinexer:~/$ python 1.py
1.41421356237
1.00000000001e+11

测试 1e11 的准确性

我们应该使用“小数”而不是“浮点数”吗? #987
合作者作者
哈维 评论了 2018 年 9 月 30 日  

精度高于1e-7

只要你不需要乘以结果。您需要了解,当您一次又一次地进行数学运算时,错误会累积。

目前 bCNC 生成小数点后 6 位的 g 代码,当我们尝试使用更多时会遇到问题。对于我和我的机器来说,如此精确是没有意义的。但是 bCNC 的代码必须解决一些基于精度的问题。例如。你不能直接比较两点来判断它们是否相同。您必须检查它们之间的距离是否小于 1e-7mm …(有时这可能有意义。有时没那么多)

我们应该使用“小数”而不是“浮点数”吗? #987
贡献者

@sfinexer BCNC/lib/bpath.py
EPS =1E-7

我们应该使用“小数”而不是“浮点数”吗? #987

我会说你一般不能依赖浮点数的相等比较。此外,双精度通常足够准确。(约 15 位数字)。

我们应该使用“小数”而不是“浮点数”吗? #987
贡献者
斯芬克斯 评论了 2018 年 9 月 30 日  

如果准确率更高,那么你也会比较两个数字。
但我不认为错误会累积到如此显着的程度。
必须记住,步进电机 2D / 3D 打印机将施加重大限制。

我们应该使用“小数”而不是“浮点数”吗? #987
合作者作者

@sfinexer我已经发布了一些学习链接。请至少观看这个:https
://www.youtube.com/watch?v=PZRI1IfStY0 这根本不是关于机器精度的。

我们应该使用“小数”而不是“浮点数”吗? #987
贡献者

@Harvie我想我明白你的意思了。

我们应该使用“小数”而不是“浮点数”吗? #987
贡献者

从我读到的内容来看:
计算是用错误 1 ​​e-11 进行的,这是 phyton 处理的。累计。
grbl 处理比较等式的误差是 1e-7mm。
它是一台物理机器。
我的是一个问题,没有坚实的知识基础,只是试图进行逻辑推理,错误的可能性很大:有些算法暗示错误累积的风险为百分之一/千分之一或更少,值得处理更高的精度?与机器的物理结构有关的自身误差,温度变化(膨胀或收缩),轴承摩擦,滚珠丝杠精度或其他传动机构,发动机步进位置的 5% 误差 .. ., 对于来自硬件的那些四舍五入的错误是不是可以忽略不计?

我们应该使用“小数”而不是“浮点数”吗? #987 哈维 补充道 研究和代码清理 需要更多思考的长期想法标签 2018 年 10 月 30 日

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
研究和代码清理需要更多思考的长期想法
项目

还没有

发展

没有分支机构或拉取请求

4人参加
我们应该使用“小数”而不是“浮点数”吗? #987我们应该使用“小数”而不是“浮点数”吗? #987我们应该使用“小数”而不是“浮点数”吗? #987我们应该使用“小数”而不是“浮点数”吗? #987

喜欢 (0)