Java数字处理的几种方法

news/2024/11/24 13:32:56/

一、数字格式化

我们使用DecimalFormat来格式化数字。

DecimalFormat中有几个特殊的字符需要说明:

0 代表阿拉伯数字,使用特殊字符0表示数字的一位阿拉伯数字,如果该位不存在数字,则显示0

# 代表阿拉伯数字,使用特殊字符'#'表示数字的一位阿拉伯数字,如果该位存在数字,则显示字符,如果该位不存在数字,则不显示。

. 代表小数分隔符或货币小数分隔符

- 代表负号

, 代表分隔符

% 代表放置在数字的前缀和后缀,将数字乘以100显示位百分数

\u00A4 代表放置在数字前缀或后缀,做为货币记号

代码示例如下:

import java.text.DecimalFormat;/*** @author qx* @date 2023/06/10* @desc DecimalFormat测试*/
public class DecimalFormatDemo {public static void main(String[] args) {simpleFormat("000000.000", 123.78);simpleFormat("######.###", 123.78);simpleFormat("#%", 0.5);simpleFormat("\u00A4#", 20);}private static void simpleFormat(String pattern, double value) {DecimalFormat decimalFormat = new DecimalFormat(pattern);String output = decimalFormat.format(value);System.out.println(output);}
}

程序执行结果:

000123.780
123.78
50%
¥20

二、Math类

ceil:返回大于等于参数的最小整数

floor: 返回小于等于参数的最大整数

round:将参数加上0.5后返回与参数最近的整数

max(a,b):返回两个数之间的最大值

min(a,b): 返回两个数之间的最小值

abs:返回参数的绝对值

示例代码如下:

/*** @author qx* @date 2023/06/10* @desc*/
public class MathDemo {public static void main(String[] args) {// 输出4.0System.out.println(Math.ceil(3.5));// 输出3.0System.out.println(Math.floor(3.5));// 输出4System.out.println(Math.round(3.5));// 输出8System.out.println(Math.max(3, 8));// 输出2System.out.println(Math.min(3, 2));// 输出3.2System.out.println(Math.abs(-3.2));}
}

三、BigInteger类

用于实现更大的整数。

add:加法

subtract:减法

multiply:乘法

divide:除法

示例代码如下:

import java.math.BigInteger;/*** @author qx* @date 2023/06/10* @desc BigInteger测试*/
public class BigIntegerDemo {public static void main(String[] args) {BigInteger b1 = new BigInteger("987654321");BigInteger b2 = new BigInteger("123456789");System.out.println("加法:" + b1.add(b2));System.out.println("减法:" + b1.subtract(b2));System.out.println("乘法:" + b1.multiply(b2));System.out.println("除法:" + b1.divide(b2));}
}

四、BigDecimal

BigDecimal和BigInteger都可以实现大数字的运算,不同的是BigDecimal加入了小数的概念。一般的float和double只可以用来做科学计算或工程计算,但是做不了商业计算,实现不了高精度的计算。所以要用到BigDecimal实现如何精度的计算。

add:加法

subtract:减法

multiply:乘法

divide(BigDecimal divisor,int scale,RoundingMode roundingMode):除法 方法中的3个参数分别代表除数、商的小数点后的位数、近似处理模式。

RoundingMode.HALF_DOWN:对商进行四舍五入的操作,如果商的最后一位小于等于5,则舍弃。如果最后一位大于5,则进位操做,如7.5~7

RoundingMode.HALF_UP:对商进行四舍五入的操作,如果商的最后一位小于等于5,则舍弃。如果最后一位大于5,则进位操做,如7.5~8

示例代码如下:

import java.math.BigDecimal;
import java.math.RoundingMode;/*** @author qx* @date 2023/06/10* @desc BigDecimal测试*/
public class BigDecimalDemo {public static void main(String[] args) {BigDecimal b1 = new BigDecimal("0.009");BigDecimal b2 = new BigDecimal("0.001");// 加法System.out.println(b1.add(b2));// 减法System.out.println(b1.subtract(b2));// 乘法System.out.println(b1.multiply(b2));// 除法 保留5位小数  四舍五入System.out.println(b1.divide(b2, 5, RoundingMode.HALF_UP));}
}

程序执行结果

0.010
0.008
0.000009
9.00000


http://www.ppmy.cn/news/319762.html

相关文章

快速在linux上配置python3.x的环境以及可能报错的解决方案(python其它版本可同样方式安装)

一. linux安装python3.x 下面案例是安装python3.9 步骤,也可以指定其他版本安装 步骤1:安装系统依赖(重要) 这一步不执行,后面各种错误。 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sql…

半导体器件基础(期末模电速成)

目录 1、半导体分类 2、PN结 3、二极管 4、稳压二极管 5、三极管 6、场效应管 1、半导体分类 2、PN结 3、二极管 伏安特性: 我们第七版模电书上给的正向导通压降分别约为0.7和0.2V,且硅的单向导电性更好 如何确定二极管状态? 阳极电压…

SQL高级处理

所谓高级处理,从用户的角度来讲,就是那些对数值进行排序,计算销售总额等我们熟悉的处理;从SQL的角度来讲,就是近几年才添加的新功能,这些新功能使得SQL的工作范围不断得到扩展。 窗口函数 窗口函数可以进…

CTFHub | 读取源代码

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。 0x01 题目描述…

十分钟,零基础使用uniCloud完成后端管理系统搭建一

本文主要是通过uniCloud搭建后端管理系统,适合小白开发者、个人开发者,零后端基础,快速、低成本完成后端管理系统搭建。 还未创建uniCloud服务空间的开发者可以查看我的文章:Dcloud开发者注册,uniCloud服务空间创建。…

Mac外接4k显示器文字变小

连接线为HDMI接口,如何调出最舒适的分辨率以适应显示屏的显示方式 1.Apple->系统偏好设置->显示器 正常点击缩放分辨率设置只有四个档,3840*2160最高,但是字体特小,尝试选择低分辨率,字体虽然变大了&#xff0c…

MacBook 接2k显示屏,解决字虚问题

MacBook 接2k显示屏,解决字虚问题 参考文章: (1)MacBook 接2k显示屏,解决字虚问题 (2)https://www.cnblogs.com/willaty/p/11087248.html 备忘一下。

Mac外接2k显示器遇到的问题

最近买了一台外接显示器,遇到几个问题 使用拓展坞和直连线,显示器显示发灰外接显示器以后笔记本变的很卡,我的mbp是19的16寸的。pdf显示问题 问题1,经过换了多个拓展坞和直连线以后,发现原因是开了高动态范围导致的。…