java中求高精度除法,要求保留N位小数

网友投稿 401 2022-12-19

java中求高精度除法,要求保留N位小数

目录求高精度除法,要求保留N位小数题目要求java 大数处理和高精度小数处理(so easy)简单的例子:部分简单代码

求高精度除法,要求保留N位小数

题目要求

高精度除法,要求保留N位小数(四舍五入),并且当整数部分为0时去除0的显示

import java.math.BigDecimal;

import java.util.Scanner;

public class BD

{

public static void main(String[] args)

{

Scanner scanner = new Scanner(System.in);

while(scanner.hasNext())

{

BigDecimal a = scanner.nextBigDecimal();

BigDecimal b = scanner.nextBigDecimal();

int n = scanner.nextInt();

System.out.println(a.divide(b, n, BigDecimal.ROUND_HALF_UP).toString().replaceFirst("^0*", ""));

}

}

}

java 大数处理和高精度小数处理(so easy)

试用范围:当对数据处理时,最大的long型不能装下,这时候就需要采用大数BigInteger来解决

简单的例子:

package cn.hncu.BigNUM;

import java.math.BigInteger;

public class bigIntegerdemo {

public static void http://main(String[] args) {

BigInteger sum=jc(100);//计算100的阶乘是很大的数,long是超范围的,所以采用Java 中的大数处理,BigInteger

System.out.println(sum);

}

private static BigInteger jc(int n) {

BigInteger s=BigInteger.valueOf(1);//必须先变成bigInteger类型的才能进行运算

for(int i=1;i<=n;i++){

s=s.multiply(BigInteger.valueOf(i));//BigInteger的函数乘法也要用到函数

}

retrfJWGZteLurn s;

}

}

若是采用double 值来操作,就会可能出现0.9999等一些近似值

部分简单代码

package cn.hncu.BigNUM;

import java.math.BigDecimal;

public class BigDecimal1 {

//高精度数处理

public static void main(String[] args) {

double sum=0;

for(int i=0;i<10;i++){

sum=sum+0.1;

}//0.9999999999999999

System.out.println(sum);//这样的结果,是按着科学计算法来算,如double 四位,用二进制来表示,因为不可能完全能够表示,所以去了近似值

add();

}

private static void add() {

BigDecimal be =new BigDecimal(0);

for(int i=0;i<10;i++){

be=be.add(new BigDecimal(0.1));//变成高精度后,会运算精准

}

System.out.println(be.doubleValue());//1.0

}

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 高精度的大数字运算方式
下一篇:Java中求Logn/log2 的精度问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~