当前位置: 首页 > news >正文

二十二,数学运算相关的类

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1. Math类

数学方法类,属性和接口都是静态的,所以可以用静态导入的方式使用(static import).

示例:

package com.ares.mathdemo;
public class MathDemo {
	public static void main(String[] args) {
		System.out.println("PI = " + Math.PI);
		System.out.println(Math.max(1, 2));
		System.out.println(Math.round(89.9876));	// 四舍五入
	}
}



2. Random类

取得一定范围的类的随机数.

示例:

package com.ares.randomdemo;
import java.util.Random;
public class RandomDemo {
	public static void main(String[] args) {
		Random r = new Random();
		for (int i = 0; i < 10; i++) {
			System.out.print(r.nextInt(100) + "、");
		}
	}
}



3. NumberFormat类

NumberFormat也是Format类的三个子类之一,这三个子类都是和国际化编程有关的.

它有一个子类DecimalFormat,可以完成数字相关的自定义格式化操作.

示例1:

package com.ares.numberformatdemo;
import java.text.NumberFormat;
public class NumberFormatDemo {
	public static void main(String args[]) {
		int temp = 1000010000;
		NumberFormat num = NumberFormat.getInstance() ;
		System.out.println(num.format(temp));
	}
}

示例2:

package com.ares.numberformatdemo;
import java.text.DecimalFormat;
class FormatDemo {
	public void format(String pattern, double value) { // 此方法专门用于格式化
		DecimalFormat format = new DecimalFormat(pattern); // 指定操作的模板
		String str = format.format(value);// 转换操作
		System.out.println("数字按照格式(" + pattern + ")的转换结果是:" + str);
	}
}
public class DecimalFormatDemo {
	public static void main(String[] args) {
		FormatDemo format = new FormatDemo() ;
		format.format("000,000.000", 23456.45) ;
		format.format("###,###.###", 23456.45) ;
		format.format("000,000.000¥", 23456.45) ;
		format.format("###,###.###¥", 23456.45) ;
		format.format("##.###%", 0.34567) ;
		format.format("00.###%", 0.034567) ;
	}
}



4.大数操作

大树操作是指数据非常大,大到已经超过了整个数据类型的保存范围.java中为了解决这类问题,提供了两个类来完成相关的操作.

4.1 BigInteger类

大整型数的操作.

示例:

package com.ares.largenumberdemo;
import java.math.BigInteger;
public class BigIntegerDemo {
	public static void main(String[] args) {
		String num1 = "9999999999999999999999999999999999";
		String num2 = "9999999999999999999999999999999998";
		BigInteger big1 = new BigInteger(num1); // 实例化BigInteger对象
		BigInteger big2 = new BigInteger(num2); // 实例化BigInteger对象
		System.out.println("加法操作:" + big1.add(big2));
		System.out.println("减法操作:" + big1.subtract(big2));
		System.out.println("乘法操作:" + big1.multiply(big2));
		System.out.println("除法操作:" + big1.divide(big2));
		BigInteger result[] = big1.divideAndRemainder(big2);// 进行触发操作,有余数
		System.out.println("相除之后的商是:" + result[0]);
		System.out.println("相除之后的余数是:" + result[1]);
	}
}



4.2 BigDecimal类

处理大浮点数.

示例:

package org.lxh.largenumberdemo;
import java.math.BigDecimal;
class MyMath {
	public static double add(String num1, String num2) {
		BigDecimal bd1 = new BigDecimal(num1);
		BigDecimal bd2 = new BigDecimal(num2);
		return bd1.add(bd2).doubleValue();
	}
	public static double sub(String num1, String num2) {
		BigDecimal bd1 = new BigDecimal(num1);
		BigDecimal bd2 = new BigDecimal(num2);
		return bd1.subtract(bd2).doubleValue();
	}
	public static double mul(String num1, String num2) {
		BigDecimal bd1 = new BigDecimal(num1);
		BigDecimal bd2 = new BigDecimal(num2);
		return bd1.multiply(bd2).doubleValue();
	}
	public static double div(String num1, String num2, int scale) {
		BigDecimal bd1 = new BigDecimal(num1);
		BigDecimal bd2 = new BigDecimal(num2);
		return bd1.divide(bd2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
	}
	public static double round(double num, int scale) {
		BigDecimal bd1 = new BigDecimal(num);
		BigDecimal bd2 = new BigDecimal(1);
		return bd1.divide(bd2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
	}
}
public class BigDecimalDemo {
	public static void main(String[] args) {
		String num1 = "12345.07891";
		String num2 = "3333.5101";
		System.out.println("加法操作:" + MyMath.round(MyMath.add(num1, num2), 2));
		System.out.println("减法操作:" + MyMath.round(MyMath.sub(num1, num2), 2));
		System.out.println("乘法操作:" + MyMath.round(MyMath.mul(num1, num2), 2));
		System.out.println("除法操作:" + (MyMath.div(num1, num2, 2)));
	}
}







20150428


JAVA学习笔记系列

--------------------------------------------

                    联系方式

--------------------------------------------

        Weibo: ARESXIONG

        E-Mail: aresxdy@gmail.com

------------------------------------------------

转载于:https://my.oschina.net/u/2288529/blog/407892

相关文章:

  • javascript中的this
  • Github Pages 静态网页建站
  • 2301: [HAOI2011]Problem b
  • poj 1251 统计难题(字典树)
  • uploadify.js参数说明(转)
  • MongoDB高可用架构:Replica Sets+Sharding
  • 实验二 Java面向对象程序设计
  • Linq之求和,平均值,最大值,最小值
  • Android 中文API (70) —— BluetoothDevice[蓝牙]
  • 动态数组排序实例
  • Nginx 反向代理、负载均衡与动静分离
  • [裴礼文数学分析中的典型问题与方法习题参考解答]4.4.9
  • 贪心 URAL 1303 Minimal Coverage
  • 使用JS或jQuery模拟鼠标点击a标签事件代码
  • 创建activiti工作流所需23张表
  • [译] React v16.8: 含有Hooks的版本
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【附node操作实例】redis简明入门系列—字符串类型
  • egg(89)--egg之redis的发布和订阅
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • JAVA_NIO系列——Channel和Buffer详解
  • Laravel 中的一个后期静态绑定
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • magento 货币换算
  • Node + FFmpeg 实现Canvas动画导出视频
  • webpack+react项目初体验——记录我的webpack环境配置
  • 机器学习学习笔记一
  • 如何用vue打造一个移动端音乐播放器
  • 如何在GitHub上创建个人博客
  • 用mpvue开发微信小程序
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • #laravel 通过手动安装依赖PHPExcel#
  • $GOPATH/go.mod exists but should not goland
  • (4) PIVOT 和 UPIVOT 的使用
  • (rabbitmq的高级特性)消息可靠性
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (九)One-Wire总线-DS18B20
  • (排序详解之 堆排序)
  • (三)uboot源码分析
  • (一) storm的集群安装与配置
  • (一)基于IDEA的JAVA基础1
  • (原創) 物件導向與老子思想 (OO)
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • ./和../以及/和~之间的区别
  • .jks文件(JAVA KeyStore)
  • .NET Core 中的路径问题
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .net6使用Sejil可视化日志
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [20170713] 无法访问SQL Server