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

 更新时间:2021年08月13日 11:53:53   作者:猫御龙  
这篇文章主要介绍了java中求高精度除法,要求保留N位小数的实现,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

求高精度除法,要求保留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 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的函数乘法也要用到函数
  }
  return 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  
 } 
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java入门交换数组中两个元素的位置

    Java入门交换数组中两个元素的位置

    在Java中,交换数组中的两个元素是基本的数组操作,下面我们将详细介绍如何实现这一操作,以及在实际应用中这种技术的重要性,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Java ExecutorService四种线程池使用详解

    Java ExecutorService四种线程池使用详解

    这篇文章主要介绍了Java ExecutorService四种线程池使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • ThreadLocal导致JVM内存泄漏原因探究

    ThreadLocal导致JVM内存泄漏原因探究

    ThreadLocal是JDK提供的线程本地变量机制,但若使用不当可能导致内存泄漏。正确的使用方式是在使用完后及时remove,或者使用弱引用等手段避免强引用导致的内存泄漏。在多线程编程中,合理使用ThreadLocal可以提高并发性能,但也需要注意其潜在的内存泄漏问题
    2023-04-04
  • java.net.MalformedURLException异常的解决方法

    java.net.MalformedURLException异常的解决方法

    下面小编就为大家带来一篇java.net.MalformedURLException异常的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Java 静态数据初始化的示例代码

    Java 静态数据初始化的示例代码

    这篇文章主要介绍了Java 静态数据初始化的示例代码,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下
    2020-09-09
  • SpringBoot使用Maven实现多环境配置管理

    SpringBoot使用Maven实现多环境配置管理

    软件开发中经常有开发环境、测试环境、生产环境,而且一般这些环境配置会各不相同,本文主要介绍了SpringBoot使用Maven实现多环境配置管理,感兴趣的可以了解一下
    2024-01-01
  • 五种JAVA GUI布局管理的方式

    五种JAVA GUI布局管理的方式

    这篇文章主要介绍了JAVA几种GUI布局管理的相关知识,文中代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Java 如何获取某年的第一天和最后一天

    Java 如何获取某年的第一天和最后一天

    在统计的数据是时候,要统计某年的数据,开始时间是某年的第一天,结束时间是某年的最后一天,该如何获取某年的第一天和最后一天,今天通过本文介绍下Java获取某年的第一天和最后一天,需要的朋友可以参考下
    2023-07-07
  • Springboot整合freemarker和相应的语法详解

    Springboot整合freemarker和相应的语法详解

    FreeMarker是一款Spring官方推荐使用的模板引擎。接下来通过本文给大家介绍Springboot整合freemarker和相应的语法,感兴趣的朋友一起看看吧
    2021-09-09
  • RocketMQ之Consumer整体介绍启动源码分析

    RocketMQ之Consumer整体介绍启动源码分析

    这篇文章主要为大家介绍了RocketMQ源码分析之Consumer整体介绍启动分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论