0 0

java中double型数据如何四舍五入?10

问题描述: java中如何将一个double保存指定位数有效数字且进行四舍五入?
下面以保存两位有效数字为例。

(1)首先我们想到用先乘以100取整后再除以100.0这种做法:
System.out.println(Math.round(4.015*100)/100.0);
执行结果为4.01,显然没有达到我们想要的结果。

(2)那用java.text.DecimalFormat呢?
System.out.println(new java.text.DecimalFormat("0.00").format(4.015));
System.out.println(new java.text.DecimalFormat("0.00").format(4.025));
执行结果都为4.02。

(3)用java.math.BigDecimal.
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。
double   abc   =   4.015;   //4.025
System.out.println(new  java.math.BigDecimal(abc).setScale(2,java.math.BigDecimal.ROUND_HALF_UP).doubleValue());

结果:4.01 (当使用4.025时结果为4.03)
看来还是达不到效果。

(4)用下面的方法:
System.out.println(Math.round(4.015*100 + 0.5)/100.0);

不知道大家有没有更好的办法?
2010年3月28日 11:06

5个答案 按时间排序 按投票排序

0 0

http://blog.csdn.net/qwfylwc/article/details/53939906

2017年4月11日 16:42
0 0

Java取整函数 四舍五入函数
http://dict.xsoftlab.net/dict/the-java-rounding-function

2014年9月04日 21:55
0 0

用BigDecimal类,具体你可以看一下API

2010年3月29日 10:02
0 0

要这样,注意红色部分

double   abc   =   4.015;   //4.025
System.out.println(new  java.math.BigDecimal(Double.toString(abc)).setScale(2,java.math.BigDecimal.ROUND_HALF_UP).doubleValue());

2010年3月28日 11:39
0 0

This is what I used :

java.text.DecimalFormat d_f = new java.text.DecimalFormat("########.00");

2010年3月28日 11:06

相关推荐

    java面试题大全--java基础,struts,spring,ejb等

    - **取小数点前两位并四舍五入**:使用`Math.round()`方法结合数学运算实现,例如: ```java double value = 123.456; double roundedValue = Math.round(value * 100.0) / 100.0; ``` #### 4. 日期和时间 - *...

    java数据类型汇总

    - **浮点数与整数的舍入**:`Math.round()`可以将浮点数转换为整数,同时进行四舍五入。 理解这些转换规则对于编写高效且无错的Java代码至关重要。在编程实践中,要特别注意数据类型的兼容性和潜在的类型转换问题...

    Java与MySQL中小数保存问题解析.pptx.pptx

    4. 在运算过程中,适时进行四舍五入处理,以避免精度损失累积。 在实际操作中,Java程序通过JDBC与MySQL数据库交互时,需要特别注意数据类型的对应关系。Java的float对应MySQL的FLOAT,double对应DOUBLE。当处理...

    Java学习笔记,变量和数据类型和运算符

    Java学习笔记中的变量和数据类型是 Java 语言的基础,了解 Java 的变量和数据类型是学习 Java 的必要步骤。 1. 数据类型 Java 中的数据类型可以分为基本数据类型和引用数据类型两种。基本数据类型包括整数型、...

    详解java中float与double的区别

    当输出单个浮点型数据的时候,可以正确输出,如 double d = 2.4;System.out.println(d); 输出的是 2.4,而不是 2.3999999999999999。也就是说,不进行浮点计算的时候,在十进制里浮点数能正确显示。这更印证了我以上...

    java数据类型转换.pdf

    - 浮点型转换为整型时,会舍去小数部分,而不是四舍五入。如果需要四舍五入,可以先乘以10的适当幂,再进行整数转换,最后除以相同幂。 - 在进行类型转换时,尤其是涉及精度和范围的转换,要谨慎处理可能的异常,...

    java保留两位小数问题

    本文将深入探讨如何在Java中保留两位小数,并覆盖四舍五入、浮点数精确计算以及避免科学记数法等问题。 #### 四舍五入保留两位小数 四舍五入是数学中的一个基本概念,指的是当一个数的小数部分小于等于0.5时,将其...

    double保留小数

    - `BigDecimal.ROUND_HALF_UP`:四舍五入,向“最接近的邻居”舍入,除非两者都同样接近,此时舍入远离零的方向。 - `BigDecimal.ROUND_HALF_DOWN`:五舍六入,向“最接近的邻居”舍入,除非两者都同样接近,此时...

    Java的8大基本数据类型.pdf

    Java的8大基本数据类型是编程中的核心概念,它们包括整型、浮点型、字符型和布尔型。下面是对这些基本数据类型的详细介绍: 1. **整型**: 包括`byte`, `short`, `int`, 和 `long`。它们分别占用8位、16位、32位和64...

    H2Database数据类型.pdf

    这两个浮点类型不适合用来存储精确的货币值,因为会有四舍五入的问题。 时间日期类型包括TIME、DATE和TIMESTAMP等。TIME类型用于存储时间信息,格式为hh:mm:ss,对应Java中的Time类型。DATE类型用于存储日期信息,...

    2023年开发人员面试宝典Java版.docx

    Math.round() 是 Java 中的数学函数,用于将数字四舍五入。 1.13 构造器是否可以被重写 构造器不能被重写,因为构造器是对象的初始化方法。 1.14 抽象类和接口的区别 抽象类和接口都是 Java 中的抽象类型,但...

    JAVA面试题最全集.pdf

    3. 数据类型之间的转换:如何将数值型字符转换为数字(Integer、Double),如何将数字转换为字符,如何取小数点前两位并四舍五入。 4. 日期和时间:如何取得年月日、小时分秒,如何取得从1970年到现在的毫秒数,如何...

    java猜数字游戏java猜数字游戏.doc

    2. Math.round() 方法:将一个 double 型数据四舍五入为 long 型数据。 3. Scanner 类:用于获取用户的输入。 4. 循环结构:while 循环和 do-while 循环的使用。 5. 判断结构:if-else 语句的使用。 6. 字符串操作:...

    Java计算工具类

    为了处理浮点数计算后的精度问题,`MathUtil`类可能包含`round()`方法,用于对结果进行四舍五入,如`int round(double value)`。 7. **最大值和最小值**: 类中可能包含`max()`和`min()`方法来找出两个或多个数值...

    Java面试题及答案pdf

    如何取小数点前两位,并四舍五入。 4.日期和时间 如何取得年月日,小时分秒 如何取得从1970年到现在的毫秒数 如何猎取某个日期是当月的最终一天 如何格式化日期 5.数组和集合 6.文件和名目(I/O)操作 如何列出某个名...

    java基本数据类型习题(选择24) (2).pdf

    实型变量在运算中通常不会像整型那样直接溢出,而是进行舍入处理。 10. char类型:'n'表示回车符,'r'表示换行符,char类型在内存中占用16位,所有Unicode字符都可以作为char类型的常量,因此选项B是正确的。 11. ...

    Java学习教程-java中number类浅析.docx

    3. **四舍五入**: - `rint(double a)`: 返回与参数最接近的整数。返回类型为`double`。 - 示例:`double i1 = 1.623; double i2 = Math.rint(i1);` 4. **取整**: - `round(float a)`: 返回一个最接近的`int`或...

    实习生java面试题集及详细答案

    使用`BigDecimal`进行精确的小数运算和四舍五入: ```java BigDecimal bd = new BigDecimal("3.856"); bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); System.out.println(bd); ``` ### 日期和时间操作 #### ...

    Java面试题,10万字208道Java经典面试题总结(附答案)

    Math.round方法进行四舍五入,它将浮点数转换为最接近的整数,结果是相同或更接近零的整数。例如,Math.round(-1.5)将返回-1。 5. String不是基础数据类型: Java的八种基本数据类型是byte、short、char、int、...

Global site tag (gtag.js) - Google Analytics