假设一个块的大小是1X1,我必须沿x和y方向以1/16的步长移动。我想将0.53124舍入到最接近块的大小的1/16,即0.5625。同样地,我想将0.53124截断到最接近块大小的1/16,即0.5。有没有一种有效的方法呢?请告诉我。
答案 0 :(得分:5)
在大多数情况下最简单的方法和语言将是
答案 1 :(得分:0)
由于你似乎想要定点,我会尽可能使用定点(以1/16为单位的整数)。但是如果你真的需要混合使用浮点运算和舍入,一种方法是偏差你的所有值都是一个巨大的数字,这样1/16的位置才是最后的位置。不幸的是,对于gcc,这种方法在i387这样的系统上可能存在问题,其中浮点表达式的评估具有额外的精度,除非你已经在任何地方使用long double
,所以从实际的角度来看,Joachim的答案可能更容易让人更可靠(虽然它可能表现得更糟)。