`

java除法保存小数点后位数的方法(附精确计算工具类)

 
阅读更多
1.格式要求
(double) (Math.round(sd3*10000)/10000.0);  // 这样为保持4位
(double) (Math.round(sd3*100)/100.0); // 这样为保持2位.
2.另一种办法

import java.text.DecimalFormat;
// 第一个为2位,第二个为3位.
DecimalFormat df2  = new DecimalFormat("###.00");
DecimalFormat df2  = new DecimalFormat("###.000");
System.out.println(df2.format(doube_var));
3.第三种方法

BigDecimal b1 = new BigDecimal(Double.toString(v1)); 
BigDecimal b2 = new BigDecimal(Double.toString(v2)); 
rslt = b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
// scale表示表示需要精确到小数点以后几位。
4.第四种方法
如果要精确计算后去除小数点,计算出来BigDecimal类型的结果后,有如下三个方法:

toBigInteger()   // 如果数字很大用这个,返回一个BigInteger类的对象(JAVA中有这样的类,如果你的程序确实只要整数的话就用这个类吧。),小数部分直接CUT。
intValue()  // 返回int型
longValue() // 返回long型
参考:http://foolraty.iteye.com/blog/648171

复制代码
import java.math.BigDecimal;  
   import java.text.DecimalFormat;  
    
   public class TestGetInt {  
   public static void main(String[] args) {  
   double i = 2, j = 2.1, k = 2.5, m = 2.9;  
    
   System.out.println("舍掉小数取整:Math.floor(" + i + ")=" + (int) Math.floor(i));  
   System.out.println("舍掉小数取整:Math.floor(" + j + ")=" + (int) Math.floor(j));  
   System.out.println("舍掉小数取整:Math.floor(" + k + ")=" + (int) Math.floor(k));  
   System.out.println("舍掉小数取整:Math.floor(" + m + ")=" + (int) Math.floor(m));  
   System.out.println();  
    
   System.out.println("舍掉小数取整:Math.floor(-" + i + ")=" + (int) Math.floor(-i));  
   System.out.println("舍掉小数取整:Math.floor(-" + j + ")=" + (int) Math.floor(-j));  
   System.out.println("舍掉小数取整:Math.floor(-" + k + ")=" + (int) Math.floor(-k));  
   System.out.println("舍掉小数取整:Math.floor(-" + m + ")=" + (int) Math.floor(-m));  
   System.out.println();  
    
   // 这段被注释的代码不能正确的实现四舍五入取整  
   System.out.println("四舍五入取整:Math.rint(" + i + ")=" + (int) Math.rint(i));  
   System.out.println("四舍五入取整:Math.rint(" + j + ")=" + (int) Math.rint(j));  
   System.out.println("四舍五入取整:Math.rint(" + k + ")=" + (int) Math.rint(k));  
   System.out.println("四舍五入取整:Math.rint(" + m + ")=" + (int) Math.rint(m));  
   System.out.println();  
    
   System.out.println("四舍五入取整:Math.rint(-" + i + ")=" + (int) Math.rint(-i));  
   System.out.println("四舍五入取整:Math.rint(-" + j + ")=" + (int) Math.rint(-j));  
   System.out.println("四舍五入取整:Math.rint(-" + k + ")=" + (int) Math.rint(-k));  
   System.out.println("四舍五入取整:Math.rint(-" + m + ")=" + (int) Math.rint(-m));  
   System.out.println();  
    
   System.out.println("DecimalFormat四舍五入取整:(" + i + ")="  
   + new DecimalFormat("0").format(i));  
   System.out.println("DecimalFormat四舍五入取整:(" + j + ")="  
   + new DecimalFormat("0").format(j));  
   System.out.println("DecimalFormat四舍五入取整:(" + k + ")="  
   + new DecimalFormat("0").format(k));  
   System.out.println("DecimalFormat四舍五入取整:(" + m + ")="  
   + new DecimalFormat("0").format(m));  
   System.out.println();  
   
   System.out.println("DecimalFormat四舍五入取整:(-" + i + ")="  
   + new DecimalFormat("0").format(-i));  
   System.out.println("DecimalFormat四舍五入取整:(-" + j + ")="  
   + new DecimalFormat("0").format(-j));  
   System.out.println("DecimalFormat四舍五入取整:(-" + k + ")="  
   + new DecimalFormat("0").format(-k));  
   System.out.println("DecimalFormat四舍五入取整:(-" + m + ")="  
   + new DecimalFormat("0").format(-m));  
   System.out.println();  
    
   System.out.println("BigDecimal四舍五入取整:(" + i + ")="  
   + new BigDecimal("2").setScale(0, BigDecimal.ROUND_HALF_UP));  
   System.out.println("BigDecimal四舍五入取整:(" + j + ")="  
   + new BigDecimal("2.1").setScale(0, BigDecimal.ROUND_HALF_UP));  
   System.out.println("BigDecimal四舍五入取整:(" + k + ")="  
   + new BigDecimal("2.5").setScale(0, BigDecimal.ROUND_HALF_UP));  
   System.out.println("BigDecimal四舍五入取整:(" + m + ")="  
   + new BigDecimal("2.9").setScale(0, BigDecimal.ROUND_HALF_UP));  
   System.out.println();  
    
   System.out.println("BigDecimal四舍五入取整:(-" + i + ")="  
   + new BigDecimal("-2").setScale(0, BigDecimal.ROUND_HALF_UP));  
   System.out.println("BigDecimal四舍五入取整:(-" + j + ")="  
   + new BigDecimal("-2.1").setScale(0, BigDecimal.ROUND_HALF_UP));  
   System.out.println("BigDecimal四舍五入取整:(-" + k + ")="  
   + new BigDecimal("-2.5").setScale(0, BigDecimal.ROUND_HALF_UP));  
   System.out.println("BigDecimal四舍五入取整:(-" + m + ")="  
   + new BigDecimal("-2.9").setScale(0, BigDecimal.ROUND_HALF_UP));  
   System.out.println();  
    
   System.out.println("凑整:Math.ceil(" + i + ")=" + (int) Math.ceil(i));  
   System.out.println("凑整:Math.ceil(" + j + ")=" + (int) Math.ceil(j));  
   System.out.println("凑整:Math.ceil(" + k + ")=" + (int) Math.ceil(k));  
   System.out.println("凑整:Math.ceil(" + m + ")=" + (int) Math.ceil(m));  
   System.out.println();  
    
   System.out.println("凑整:Math.ceil(-" + i + ")=" + (int) Math.ceil(-i));  
   System.out.println("凑整:Math.ceil(-" + j + ")=" + (int) Math.ceil(-j));  
   System.out.println("凑整:Math.ceil(-" + k + ")=" + (int) Math.ceil(-k));  
   System.out.println("凑整:Math.ceil(-" + m + ")=" + (int) Math.ceil(-m));  
   System.out.println();  
    
   System.out.println("四舍五入取整:Math.round(" + i + ")=" + (int) Math.round(i));  
   System.out.println("四舍五入取整:Math.round(" + j + ")=" + (int) Math.round(j));  
   System.out.println("四舍五入取整:Math.round(" + k + ")=" + (int) Math.round(k));  
   System.out.println("四舍五入取整:Math.round(" + m + ")=" + (int) Math.round(m));  
   System.out.println();  
    
   System.out.println("四舍五入取整:Math.round(-" + i + ")=" + (int) Math.round(-i));  
   System.out.println("四舍五入取整:Math.round(-" + j + ")=" + (int) Math.round(-j));  
   System.out.println("四舍五入取整:Math.round(-" + k + ")=" + (int) Math.round(-k));  
   System.out.println("四舍五入取整:Math.round(-" + m + ")=" + (int) Math.round(-m));  
   }  
    
   }
复制代码
舍掉小数取整:Math.floor(2.0)=2
舍掉小数取整:Math.floor(2.1)=2
舍掉小数取整:Math.floor(2.5)=2
舍掉小数取整:Math.floor(2.9)=2

舍掉小数取整:Math.floor(-2.0)=-2
舍掉小数取整:Math.floor(-2.1)=-3
舍掉小数取整:Math.floor(-2.5)=-3
舍掉小数取整:Math.floor(-2.9)=-3

四舍五入取整:Math.rint(2.0)=2
四舍五入取整:Math.rint(2.1)=2
四舍五入取整:Math.rint(2.5)=2
四舍五入取整:Math.rint(2.9)=3

四舍五入取整:Math.rint(-2.0)=-2
四舍五入取整:Math.rint(-2.1)=-2
四舍五入取整:Math.rint(-2.5)=-2
四舍五入取整:Math.rint(-2.9)=-3

DecimalFormat四舍五入取整:(2.0)=2
DecimalFormat四舍五入取整:(2.1)=2
DecimalFormat四舍五入取整:(2.5)=2
DecimalFormat四舍五入取整:(2.9)=3

DecimalFormat四舍五入取整:(-2.0)=-2
DecimalFormat四舍五入取整:(-2.1)=-2
DecimalFormat四舍五入取整:(-2.5)=-2
DecimalFormat四舍五入取整:(-2.9)=-3

BigDecimal四舍五入取整:(2.0)=2
BigDecimal四舍五入取整:(2.1)=2
BigDecimal四舍五入取整:(2.5)=3
BigDecimal四舍五入取整:(2.9)=3

BigDecimal四舍五入取整:(-2.0)=-2
BigDecimal四舍五入取整:(-2.1)=-2
BigDecimal四舍五入取整:(-2.5)=-3
BigDecimal四舍五入取整:(-2.9)=-3

凑整:Math.ceil(2.0)=2
凑整:Math.ceil(2.1)=3
凑整:Math.ceil(2.5)=3
凑整:Math.ceil(2.9)=3

凑整:Math.ceil(-2.0)=-2
凑整:Math.ceil(-2.1)=-2
凑整:Math.ceil(-2.5)=-2
凑整:Math.ceil(-2.9)=-2

四舍五入取整:Math.round(2.0)=2
四舍五入取整:Math.round(2.1)=2
四舍五入取整:Math.round(2.5)=3
四舍五入取整:Math.round(2.9)=3

四舍五入取整:Math.round(-2.0)=-2
四舍五入取整:Math.round(-2.1)=-2
四舍五入取整:Math.round(-2.5)=-2
四舍五入取整:Math.round(-2.9)=-3
分享到:
评论

相关推荐

    java保留两位小数问题

    ### Java保留两位小数问题...综上所述,Java提供了多种方式来处理浮点数的格式化和精确计算问题,包括`BigDecimal`和`DecimalFormat`等工具类。通过合理选择合适的工具和技术,可以在实际开发中有效地解决这类问题。

    小学五年级数学上期小数点乘除法计算练习题合集.doc

    总结来说,小学五年级数学上期的小数点乘除法练习题合集是一个让学生巩固和提高小数运算能力的有效工具。通过这些练习题,学生不仅能够熟练掌握小数点的运算规则,还能通过解决各种类型的问题,提高自己的计算速度和...

    JavaScript 精确计算(2)

    例如,你可以设置小数点后的位数,以及在舍入时遵循的策略(比如四舍五入、向下取整等)。 4. **自定义工具类**:`js常用类v2.4.js`可能是开发者自定义的一组工具函数,其中可能包含了处理大数运算的函数。这些工具...

    小数除法练习(四)精选.doc

    这个练习文档,"小数除法练习(四)精选.doc",旨在帮助学生掌握如何正确处理小数除法的问题,包括比较、精确计算以及解决实际问题。 一、小数除法的基本规则 1. **除数和被除数的调整**:当一个小数除以另一个...

    小学五年级数学小数除法PPT课件.pptx

    4. **不够除的情况**:如果被除数的个位数不足以除以除数,那么需要在商的个位上写0,并在0的右下角点上小数点,然后继续除法。例如,5.4÷6中,由于5不够除以6,就在商的个位上写0,并继续运算得到4.9。 5. **带...

    运用BigDecimal精确计算

    在进行除法运算时,我们通常需要指定一个精度(scale),即小数点后的位数。舍入模式决定了在计算过程中如何处理超出精度的数字,例如`RoundingMode.HALF_UP`(四舍五入)、`RoundingMode.DOWN`(向下取整)等。 4...

    小数乘除法计算题和答案.doc

    对于循环小数的除法问题,如1.25除以1.2,文档通过示例展示如何采用竖式计算,找到循环节,并利用简便方法记录结果。这类题目考察学生对于小数性质的理解以及在实际操作中如何灵活运用所学知识。长除法的练习,例如0...

    JS工具类

    5. **格式化输出**:为了方便输出和展示,可能包括了将浮点数转换为字符串的方法,可以控制小数点后的位数,并处理尾随零。 6. **科学计数法转换**:将大数值或小数值转换为科学计数法,便于理解和处理。 7. **...

    Java数学工具类MathUtil详解

    4. **divide(BigDecimal v1, BigDecimal v2)**: 这个方法执行相对精确的除法运算,保留默认的小数点后两位,并使用BigDecimal.ROUND_HALF_UP作为舍入模式,这意味着当需要舍入时,会倾向于更接近的偶数。如果除数为0...

    java中BigDecimal的操作方法

    4. **除法**:使用`divide()`方法进行除法运算,第三个参数用于指定保留的小数位数,第四个参数定义了舍入模式。例如: ```java public static BigDecimal divide(String num1, String num2, int scale, Rounding...

    四年级数学上册两位数乘除法计算练习题.doc

    综合来看,四年级数学上册中的两位数乘除法计算练习题文档不仅是一个练习工具,它还是一个培养学生逻辑思维、解决问题能力的平台。通过这些练习,学生不仅能够掌握两位数乘除法的计算技巧,还能够在实践中提高自己的...

    五上第三单元《小数除法》第二节一个数除以小数第二课时.ppt

    在本节课《小数除法》的第二节中,主要讲解了一个数除以小数的计算方法,特别是当被除数的小数位数少于除数时的处理方式。 首先,我们需要理解小数除法的基本原理。当一个数除以小数时,为了简化计算,我们可以将...

    苏教数学五年级上册除数是小数的除法PPT课件.pptx

    随后,通过实例演示了如何将除数是小数的除法转化为整数除法的计算步骤,强调了在计算前将除数的小数点向右移动直至成为整数,并对被除数执行相同的操作。 在实际应用中,课件利用贴近学生生活的例子,如妈妈购买...

    小学四年级上下三位数除法竖式练习300题.doc

    在小学数学教育中,三位数的除法竖式计算是关键知识点之一,尤其在四年级这一学年段,学生需要通过大量的练习来巩固他们的计算能力和对数学概念的理解。为此,特别制作了“小学四年级上下三位数除法竖式练习300题”...

    五年级上册第三单元小数除法3.6 解决问题练习题及答案【人教版】精选.doc

    五年级的数学学习,尤其是小数除法部分,是培养逻辑思维和解决实际问题能力的关键。本文以《人教版小学数学五年级上册第三单元小数除法3.6解决问题练习题及答案》为蓝本,深入探讨与应用这一数学知识。 首先,我们...

    小数除法教材分析报告文案.doc

    这个单元旨在让学生掌握小数除法的计算方法,能够正确进行计算,并能在实际生活中灵活运用。 1. **小数除以整数**: - 在这一部分,教材通过不同的例题展示了小数除以整数的各种情况。例如,当整数部分够商1时(例...

    加减乘除精确算法

    使用BigDecimal进行运算时,我们可以设定运算的精度,即小数点后的位数,以及舍入模式,比如四舍五入、向下取整等。这样,即使是在复杂的数学计算中,也能确保结果的准确性。 在描述中提到,这个工具类还包含了四舍...

    五年级数学上册小数除法练习题精选.doc

    例如,给定的题目22.4÷4或者28÷7÷7÷7÷等,要求学生在运算过程中,必须注意到每次除法后小数点的位置变化,以及如何将复杂的连续除法问题转化为多个简单问题进行处理。通过这一系列的练习,学生能够逐渐熟练掌握...

    java小程序

    在Java中,可以使用`DecimalFormat`类进行格式化,添加千位分隔符和小数点后位数的控制。 8. **打印等腰三角形**:这涉及到字符数组和循环的使用,通过控制输出空格和星号的数量,可以打印出各种形状的等腰三角形。...

Global site tag (gtag.js) - Google Analytics