任何人都可以解释这个函数做什么?这个数学舍入函数是如何工作的?
static inline void round_to_zero(volatile float *f)
{
*f += 1e-18;
*f -= 1e-18;
}
我的意思是除了添加1e-18并再次减去它,我明白这一点。但我不明白它会对传递给它的浮点数有什么影响。我试图理解它的原因是我在使用这个函数(我已经从浮动转换)的一些代码中使用双打。它的音频编码,和上面的函数来源于此库:
https://github.com/swh/lv2/blob/master/include/ladspa-util.h
我想知道是否会在双工作作为是,或需要修改的额外精度的双了。我怀疑这会摧毁最后几位数据,如果他们在那里将他们从浮动中清除掉,尽管我不太明白。但我想象如果这是它的作用,我将需要改变指数以适应双倍。
TIA,Pete
看起来像这是一个严重优化的代码,它依赖于IEEE754处理非正规数与代码处理的预期数据类型(http://en.wikipedia.org/wiki/Denormal_number)。除此之外,我无法理解它。 – caskey 2014-09-20 16:13:59
@caskey'float'非正规数字比那个小。 – ouah 2014-09-20 16:19:51