`

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`等工具类。通过合理选择合适的工具和技术,可以在实际开发中有效地解决这类问题。

    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...

    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...

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

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

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

    解决这类问题需要理解除法的本质,即找到一个数可以被另一个数整除几次,或者使用长除法进行逐步计算。 练习题的设计考虑了难度的梯度,从简单的乘法开始,逐渐增加复杂度,如涉及到更接近的数相乘,或者包含零和个...

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

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

    加减乘除精确算法

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

    java小程序

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

    优秀资料(2021-2022年收藏)小学数学五年级知识点归纳.docx

    2. 对于除数是小数的情况,我们需要先将除数化为整数,通过移动小数点,同时也要相应地移动被除数的小数点,保持数值不变,然后按照整数除法的规则计算。 3. 在处理连除问题时,可以将除法表达式转化为被除数除以几...

    Java语言课程设计-计算器制作

    - **数值输入与显示**: `CalcFunc.java`中的`Input`函数实现了数值输入的功能,例如处理小数点输入、四则运算符输入等,通过调用`Run`方法执行计算。 以上是对“Java语言课程设计-计算器制作”的详细解析,涵盖了...

    java计算器java计算器

    5. **数值格式化**:为了保持界面整洁,需要处理数字的显示格式,如限制小数点后的位数,或者控制整数部分的长度。 6. **设计模式**:如果计算器的复杂性增加,可以考虑使用设计模式,比如工厂模式用于创建按钮,...

    java简易计算器

    7. **格式化输出**:计算器的显示结果可能需要格式化,例如保留小数点后一定位数的数字,这可以通过Java的`DecimalFormat`类来实现。 8. **设计模式**:虽然这是一个简单的项目,但可以引入设计模式的思想,如MVC...

    五年级数学速算题.doc

    11. 0.75×0.4 = 0.3,乘法时,直接相乘小数点后位数相加。 12. 0.2+0.91 = 1.11,小数加法同样需要对齐小数点。 通过这些题目,孩子们还可以学习到一些计算策略,如将复杂的计算拆分为简单的步骤,或者利用乘法...

    Java BigDecimal类用法详解

    Java中的`BigDecimal`类是用来表示任意精度的十进制数,尤其适合于需要精确计算的商业和财务场景。它的核心概念包括非标度值(unscaled value)和标度(scale),非标度值是一个任意精度的整数,标度则是小数点后的...

    小数点移动引起小数大小的变化说课稿.doc

    本课的知识点主要集中在小数点移动如何影响小数的数值,以及这一规律在小数乘除法和复名数与小数转换中的应用。 首先,小数点的位置决定了小数的数值大小。当小数点向右移动,小数的值会增大;反之,向左移动则会...

Global site tag (gtag.js) - Google Analytics