论如何使用double实现取余计算 Published on May 18, 2020 in Java with 0 comment Java 里面由于浮点数不精确的特性,并不能直接用:m - (m / n)* n 计算,应该使用下面的方式 ```java /** * 求浮点数的取余计算:m/n=x...r * m、n 不同号的话:返回 m - Math.ceil (m / n) * n; 【 ceil 向上取整 】 * m、n 是同号的话:返回 m - Math.floor (m / n) * n; 【 floor 向下取整 】 * * @param m 被除数(m为负数则余值为负数,m为正数则余值为正数) * @param n 除数 * @return 余数 */ public static double mod(double m, double n) { return (m / n) > 0.0 ? m - Math.floor(m / n) * n : m - Math.ceil(m / n) * n; } ``` 上面的计算遇到 mod(Double.MAX_VALUE, 0.1) 的情况下会出现无穷大的结果,不过这是正常情况,不需要关心(即使看起来不正常) 但是在 Java、C/C++ 等语言中,整数 a%b = a-a/b*b 本篇转自:https://zhuanlan.zhihu.com/p/110822409 本文由 admin 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。