作者:robinqianqcs521 | 来源:互联网 | 2023-02-08 18:29
我目前在C中做一些2D几何,主要是相交的线.这些线有各种斜率:0.001到1000(例子,我甚至都不知道).
到目前为止我一直在使用浮点数并且不必担心值是否非常小(然后浮点将存储0,0011作为1e-3而没有舍入)或非常高(然后1001将存储为1e3)在这两种情况下,在相关的情况下几乎没有精度损失.
但现在我想尝试没有浮点数,整数.如何保持计算的精确度?我可以有一个标志告诉我斜坡是大还是小,然后考虑十分之一的大坡度和十倍小的坡度,这样小坡度的倒圆就没问题了,大斜坡的情况下也没有溢出.但这感觉很头疼.
基本上我仍然需要能够区分0.2和0.4的斜率以及斜率为1000和2000的溢出侧(假设在1000处溢出 - 这里没有问题).
还有其他想法吗?
1> chux - Reins..:
将斜率存储为一对整数
struct slope {
int delta_y;
int delta_x;
};
这允许一个宽范围的像斜坡0
和+/- 1/INT_MAX ... +/- INT_MAX
,甚至是垂直的.通过仔细编码,可以进行精确的计算.
迟到的信用:这很像@Ignacio Vazquez-Abrams评论.