相关疑难解决方法(0)

浮点数学是否破碎?

请考虑以下代码:

0.1 + 0.2 == 0.3  ->  false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2         ->  0.30000000000000004
Run Code Online (Sandbox Code Playgroud)

为什么会出现这些不准确之处?

language-agnostic math floating-point floating-accuracy

2798
推荐指数
28
解决办法
28万
查看次数

浮点线性插值

要在两个变量之间进行线性插值ab给出一个分数f,我目前正在使用此代码:

float lerp(float a, float b, float f) 
{
    return (a * (1.0 - f)) + (b * f);
}
Run Code Online (Sandbox Code Playgroud)

我认为这可能是一种更有效的方法.我正在使用没有FPU的微控制器,因此浮点运算是在软件中完成的.它们相当快,但它仍然可以添加或增加100个周期.

有什么建议?

为了清楚起见,在上面的代码中,我们可以省略指定1.0为显式浮点文字.

c embedded algorithm interpolation linear-interpolation

24
推荐指数
4
解决办法
5万
查看次数