将值舍入为最接近的数字,可以被2,4,8和16整除?

Viv*_*ngh 5 python

如何将十进制数舍入到python中可被2,4,8和16整除的最接近的数字?

例:

1920/1.33 = 1443.609022556391 
Run Code Online (Sandbox Code Playgroud)

它应该四舍五入到1440,因为它很容易被2,4,8和16整除,反之亦然(1440*1.33 = 1920).

1920/1.33 = 1440
Run Code Online (Sandbox Code Playgroud)

Mat*_*don 17

怎么样int( 16 * round( value / 16. ))

  • 问题表明要舍入到最接近的16的倍数,所以`round()`更好,因为它将在适当的点向上舍入,例如,当值为23然后24时进行比较.使用`round()`将在24处向上舍入,而` math.floor()`为16 <= value <32`返回16.0周围的行为是不明确的 - 可以被16整除0吗?`round()`也表现为你对负数的预期(尽管负数和0通常不被认为是倍数). (3认同)

Mac*_*Gol 6

如果一个数字可被16整除,那么它可被2,4和8整除.知道这一点,只需计算十进制数的模16余数并从基数中减去它.

>>>> 1443.609022556391 - (1443.609022556391 % 16)
1440.0
Run Code Online (Sandbox Code Playgroud)