java 求个位数字 java求数的位数

您所在的位置:网站首页 java求数字位数函数 java 求个位数字 java求数的位数

java 求个位数字 java求数的位数

2024-07-09 17:54| 来源: 网络整理| 查看: 265

      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