Math:Java编程中数学计算工具类
JDK提供基本的数学计算公式,这些操作都通过Math类进行包装,本课程主要讲解在Java编程中Math类的基本作用以及四舍五入操作
java.lang.Math类是在整个Java之中提供的一个数学计算的程序功能类,利用这个程序功能类可以非常方便的执行一些基础的数学计算:对数、三角函数、开方,这个类是在JDK 1.0的时候提供给我们用户使用的,同时在这个类中不提供有构造方法。
类构造方法私有化的原因有两点:
1 需要控制当前类中的实例化对象的个数,所谓的单例设计模式、多例设计模式;
2 类中没有提供普通的成员属性,并且类中的成员都是static声明,方法也采用的static声明。
在Math类的成员里面提供有两个公共的全局常量:E、PI。
除了给出的常量之外,在Math类中全部的方法几乎都是static类型定义的方法,那么下面来通过具体的程序观察这些计算公式的使用。
范例:使用Math实现数学公式的调用
package com.yootk.demo;
public class YootkDemo { // 李兴华编程训练营:yootk
public static void main(String[] args) throws Exception {
System.out.println("【绝对值】" + Math.abs(-10.3)); // 10.3
System.out.println("【最大值】" + Math.max(10, 30)); // 30
System.out.println("【最小值】" + Math.min(10, 30)); // 10
System.out.println("【正弦值】" + Math.sin(3.56)); // -0.4063057021444168
System.out.println("【对数值】" + Math.log(20)); // 2.995732273553991
}
}
以上的几个操作是数学之中最为常见的几种计算公式,但是对于Math类来说里面有一个比较头疼的方法,这个方法就是进行四舍五入的处理操作,此方法定义如下:
public static long round(double a)
但是这个round()方法的实现计算结果可能和传统的认知是有差别的(就需要特别注意,同时也是面试中会问到的问题)
范例:使用Math.round()完成四舍五入
package com.yootk.demo;
public class YootkDemo { // 李兴华编程训练营:yootk
public static void main(String[] args) throws Exception {
System.out.println("【四舍五入】" + Math.round(15.1)); // 15
System.out.println("【四舍五入】" + Math.round(15.51)); // 16
System.out.println("【四舍五入】" + Math.round(-15.1)); // -15
System.out.println("【四舍五入】" + Math.round(-15.51)); // -16
}
}
在使用Math类实现四舍五入处理的过程之中,如果要操作的数值为负数,那么这个时候如果小数点的内容超过了“0.5”,则会自动的进行进位处理。但是虽然在Math类中提供有四舍五入的处理方法,可是这个四舍五入的处理方法会将全部的小数位进行整体的进位处理,这样的处理模式一定是存在有问题的。
例如:有一家公司每年的收入都是以亿为单位的,今年的收入达到了3.467812亿,如果说要使用了Math.round()方法实现了四舍五入,最终就表示只有3亿的收入,那么请问其余的4000多万去了那里?如果要想解决这样的问题就需要开发者自己去定义一个新的四舍五入的处理方法。
范例:实现自定义四舍五入操作
package com.yootk.util;
/**
* 该类是一个自定义的数学工具类,可以弥补Math类的不足
* @author 李兴华
*/
public class MathUtil {
private MathUtil() {} // 不存在成员属性,构造方法私有化
/**
* 进行准确位数的四舍五入的处理操作
* @param num 表示要进行处理的数字
* @param scale 表示要保留的小数位数
* @return 四舍五入处理后的结果
*/
public static double round(double num, int scale) {
return Math.round(num * Math.pow(10.0, scale)) / Math.pow(10.0, scale);
}
}
在本工具类里面可以发现最终还是依靠Math类实现了四舍五入的处理操作,在Math类中由于round()方法不保留有小数位数,所以首先让数据进行一个整倍的扩充,随后在计算完成后再除以相应的倍数,就得到了正确的四舍五入结果。
范例:实现数学工具类的调用
package com.yootk.demo;
import com.yootk.util.MathUtil;
public class YootkDemo { // 李兴华编程训练营:yootk
public static void main(String[] args) throws Exception {
System.out.println("【四舍五入】" + MathUtil.round(15.3829489, 3)); // 15
}
}
这种四舍五入的实现思想不仅仅用于Java技术上,实际上各个语言都有同样的操作实现,理解思路是最为重要的。
举报/反馈
上一篇:“清北”教师邂逅德阳巴川,“小”故事书写“大”梦想
下一篇:2021年四川成人高考未被录取,征集志愿开始,增加录取机会
最近更新成人教育
- 职业教育产教融合赋能提升
- 腾讯健康:联手迈瑞医疗助推行业高质量普惠发展
- 儿童友好|“红色传承”——金华市站前小学五年级秋季研学活动
- 考生、家长速看!云南省2024年高考11月5日起报名
- 巢湖市城乡公交线路优化调整 10月20日起实施
- 自贡自流井区:密切家校合作 家校共育连心桥
- 防拐骗、防暴力、防意外……武昌水果湖二小这样教学生自护自救
- 七险二金!云南省属国有企业招人啦
- 烟台市区七个口袋公园年底全部交付
- 24日至25日,北京南部、天津、河北中部局地可达重度霾
- 自考学位证申请的条件是什么?
- 投资160亿元!德欧中心四川
- 贵州税务:加计扣除优惠政策对支持我省企业投入研发、鼓励科技创新起到重要作用
- 高通骁龙 8cx Gen 4 处理器跑分曝光,多核成绩逼近苹果 M2
- 法律职业资格考试主观题考试益阳考区首次开考
- 初级会计证考试都是选择题吗?
- 大国粮仓装满优质粮
- 把课间还给学生,“圈养”并非长久之计
- 江门鹤山:“全链条”保障好“舌尖上的安全”
- 第十届晋江市中小学生“泉州南少林五祖拳健身操”会操比赛圆满落下帷幕
- 北京市开展2023年度公开遴选和公开选调公务员工作
- 防范电信网络诈骗共建平安和谐校园
- 台庆74周年,广东广播电视台开展中医药文化进社区公益活动
- 原创CBA前三轮排名!郭士强压制老东家,新疆上升8位,北控连败露底牌
- 50%职场人群多受腱鞘炎困扰 使用人体工学键鼠有助于预防腱鞘