gpt4 book ai didi

C float : how to go around them for 2d geometry (lines)

转载 作者:行者123 更新时间:2023-12-04 08:46:09 24 4
gpt4 key购买 nike

我目前正在用 C 语言做一些 2D 几何图形,主要是直线相交。这些线有各种斜率:从 0.001 到 1000(示例,我什至不知道)。

到现在为止我一直在使用 float ,不必担心该值是非常小(然后 float 会将 0,0011 存储为 1e-3 而没有四舍五入)还是非常大(然后将存储 1001如 1e3),在这两种情况下相关的精度损失很小。

但现在我想尝试不用 float ,用整数。如何保持我的计算精度?我可以有一个标志告诉我斜坡是大还是小,然后考虑十分之一的大斜坡和十倍的小斜坡,这样圆角对于小斜坡就没有问题,在大斜坡的情况下没有溢出.但这感觉很头疼。

基本上,我仍然需要能够区分 0.2 和 0.4 的斜率,以及 1000 和 2000 的斜率的溢出端(假设整数在 1000 时溢出 - 这里问题不大)。

还有其他想法吗?

最佳答案

斜率存储为一对整数

struct slope {
int delta_y;
int delta_x;
};

这允许宽范围的坡度,例如 0+/- 1/INT_MAX ... +/- INT_MAX,甚至是垂直坡度。通过仔细编码,可以进行精确计算。

延迟学分:这很像 @Ignacio Vazquez-Abrams comment .

关于C float : how to go around them for 2d geometry (lines),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42835993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com