java 求个位数字 java求数的位数 |
您所在的位置:网站首页 › java求数字位数函数 › java 求个位数字 java求数的位数 |
int数据类型的位数为16位,short int数据类型的位数为16位,而long int的位数为32位。其余常用数据类型的位数也相当有限。在实际应用中,需要对更大或者更小的数进行运算和处理。Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。
一、Java 中 BigDecimal 类的使用方法
1、BigDecimal类经常用到的构造方法: 1.BigDecimal(int)创建一个具有参数所指定整数值的对象。 例如:BigDecimal sum = new BigDecimal(1); 2.BigDecimal(double)创建一个具有参数所指定双精度值的对象。 例如:BigDecimal sum = new BigDecimal(2.54);
2、BigDecimal类的常用运算方法:
由于BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。
1. add(BigDecimal)BigDecimal对象中的值相加,然后返回这个对象。 2. subtract(BigDecimal)BigDecimal对象中的值相减,然后返回这个对象。 3. multiply(BigDecimal)BigDecimal对象中的值相乘,然后返回这个对象。 4. divide(BigDecimal)BigDecimal对象中的值相除,然后返回这个对象。
用一些例子进行理解:
//创建BigDecimal对象 BigDecimal bigNumber = new BigDecimal("89.1234567890123456789"); BigDecimal bigRate = new BigDecimal(1000); BigDecimal bigResult = new BigDecimal(); //对象bigResult的值为0.0 //对bigNumber的值乘以1000,结果 赋予bigResult bigResult = bigNumber.multiply(bigRate); System.out.println(bigResult.toString()); //或者System.out.println(bigResult); //显示结果:89123.4567890123456789000
二、BigDecimal和格式化 由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。下面给出代码实现java的舍小数取整、四舍五入取整,四舍五入保留几位小数、凑整取上限的操作: import java.math.BigDecimal; public class A { public static void main(String[] args) { double i = 3.856; // 舍掉小数取整 System.out.println("舍掉小数取整:Math.floor(3.856)=" + (int) Math.floor(i)); // 四舍五入取整 System.out.println("四舍五入取整:(3.856)=" + new BigDecimal(i).setScale(0, BigDecimal.ROUND_HALF_UP)); // 四舍五入保留两位小数 System.out.println("四舍五入取整:(3.856)=" + new BigDecimal(i).setScale(2, BigDecimal.ROUND_HALF_UP)); // 凑整,取上限 System.out.println("凑整:Math.ceil(3.856)=" + (int) Math.ceil(i)); } }
在上面代码中:
1.使用Math.floor(i);方法实现舍掉小数取整的操作,其中形参i就是要进行操作的数。(与BigDecimal类没什么关系)
2.使用BigDecimal(i).setScale(0, BigDecimal.ROUND_HALF_UP));方法实现四舍五入的操作,其中i为要操作的数,setScale();方法中的“0”,代表小数点后不保留有效数字。以此类推,小数点后保留两位有效数字则为: "BigDecimal(i).setScale(2, BigDecimal.ROUND_HALF_UP));"。
三、蓝桥杯以及ACM有关高精度计算的题解法介绍 1.问题描述 输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。 将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。 首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。 输入格式 输入包含一个正整数n,n |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |