gpt4 book ai didi

java - JavaME 功能帮助

转载 作者:行者123 更新时间:2023-12-04 06:36:12 27 4
gpt4 key购买 nike

谁能向我解释这个 MIDP Java 函数是如何工作的?我对所使用的运算符特别好奇。

public static final int smoothDivide(int numerator, int denominator) {
return (int) ((numerator << 16) / denominator + 32768L) >> 16;
}

非常感谢

最佳答案

这是一种四舍五入到最接近整数的除法算法。它相当于

Math.round((float) numerator / denominator)

对于大范围的整数,但在没有浮点运算的情况下巧妙地实现。

运营商 <<>>bitwise shift left and shift right运营商。

这是它如何工作的直觉

首先要注意 << 16>> 16相当于 * 65536/ 65536分别。所以算法计算的是以下内容:
            / numerator * 65536           \
result = ( ------------------ + 32768 ) / 65536
\ denominator /

也就是说,它将分子按比例放大,除以它,加上比例的一半,然后再次缩小。

它类似于表达式 (int) ((numerator + 0.5) / denominator)这是进行“舍入”除法的更常见方法(但它依赖于浮点运算)。

关于java - JavaME 功能帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4849367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com