• 首页
  • 邻居
  • 关于
  • 归档
  • 搜索
  • 夜间模式
    ©2020-2026  我的学习笔记 Theme by OneBlog

    我的学习笔记博客

    搜索
    标签
    # 随笔 # Java # 教程 # openwrt # Mysql # SQL # 爬虫 # post # Js调优 # MAVEN
  • 首页>
  • Java>
  • 正文
  • 论如何使用double实现取余计算

    2020年05月18日 1.5 k 阅读 0 评论 656 字

    Java 里面由于浮点数不精确的特性,并不能直接用:m - (m / n)* n 计算,应该使用下面的方式

     /**
         * 求浮点数的取余计算: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 ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    首页邻居关于归档
    Copyright©2020-2026  All Rights Reserved.  Load:0.016 s
    京ICP备18019712号
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。