`
suixinsuoyu12519
  • 浏览: 43869 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

java四舍五入相关文章

阅读更多
public int getRound(double dSource){
int iRound
//BigDecimal的构造函数参数类型是double
BigDecimal deSource = new BigDecimal(dSource);
//deSource.setScale(0,BigDecimal.ROUND_HALF_UP) 返回值类型 BigDecimal
//intValue() 方法将BigDecimal转化为int
iRound= deSource.setScale(0,BigDecimal.ROUND_HALF_UP).intValue();
return iRound;
}


java中解决百分比保留两位小数并要求四舍五入的方法:

例如:

DecimalFormat df1 = new DecimalFormat("##.00%");     
String a = df1.format(0.56566);
System.out.println(a);

结果>>56.57%
在网上找到了下面这个文章觉得不错,在这篇文章中找到了方法解决了这个问题:

//--------------------------------------------------------------

//保留小数点后两位小数
public double Number2(double pDouble)
{
  BigDecimal  bd=new  BigDecimal(pDouble);
  BigDecimal  bd1=bd.setScale(2,bd.ROUND_HALF_UP);
  pDouble=bd1.doubleValue();
  long  ll = Double.doubleToLongBits(pDouble);
 
  return pDouble;
}

格式化输出数字
翻译:Cherami
email:cherami@163.net
原文:http://developer.java.sun.com/developer/TechTips/2000/tt0411.html
* 格式化输出数字
格式化输出数字
有时我们需要控制输出的数字的格式,如何使用java的类库做到这个呢?
也许你不关心格式,但是你需要关心你的程序可以在全世界通用,像下面的这样一个简单的语句是依赖地区的:
    System.out.println(1234.56);
在美国,"." 是小数点,但在其它地方就不一定了。如何处理这个呢?

java.text 包中的一些包可以处理这类问题。下面的简单范例使用那些类解决上面提出的问题:

    import java.text.NumberFormat;

    import java.util.Locale;

    public class DecimalFormat1 {

        public static void main(String args[]) {

            // 得到本地的缺省格式

            NumberFormat nf1 = NumberFormat.getInstance();

            System.out.println(nf1.format(1234.56));

            // 得到德国的格式

            NumberFormat nf2 =

                NumberFormat.getInstance(Locale.GERMAN);

            System.out.println(nf2.format(1234.56));

        }

    }

如果你在美国,运行程序后输出:

    1,234.56

    1.234,56

换句话说,在不同的地方使用不同的习惯表示数字。

NumberFormat.getInstance()方法返回NumberFormat的一个实例(实际上是NumberFormat具体的一个子类,例如DecimalFormat), 这适合根据本地设置格式化一个数字。你也可以使用非缺省的地区设置,例如德国。然后格式化方法根据特定的地区规则格式化数字。这个程序也可以使用一个简单的形式:

    NumberFormat.getInstance().format(1234.56)

但是保存一个格式然后重用更加有效。国际化是格式化数字时的一个大问题。

另一个是对格式的有效控制,例如指定小数部分的位数,下面是解决这个问题的一个简单例子:

    import java.text.DecimalFormat;

    import java.util.Locale;

    public class DecimalFormat2 {

        public static void main(String args[]) {

            // 得到本地的缺省格式

            DecimalFormat df1 = new DecimalFormat("####.000");

            System.out.println(df1.format(1234.56));

            // 得到德国的格式

            Locale.setDefault(Locale.GERMAN);

            DecimalFormat df2 = new DecimalFormat("####.000");

            System.out.println(df2.format(1234.56));

        }

    }

在这个例子中设置了数字的格式,使用像"####.000"的符号。这个模式意味着在小数点前有四个数字,如果不够就空着,小数点后有三位数字,不足用0补齐。程序的输出:

    1234.560

    1234,560

相似的,也可以控制指数形式的格式,例如:

    import java.text.DecimalFormat;

    public class DecimalFormat3 {

        public static void main(String args[]) {

            DecimalFormat df = new DecimalFormat("0.000E0000");

            System.out.println(df.format(1234.56));

        }

    }

输出:

    1.235E0003

对于百分数:

    import java.text.NumberFormat;

    public class DecimalFormat4 {

        public static void main(String args[]) {

            NumberFormat nf = NumberFormat.getPercentInstance();

            System.out.println(nf.format(0.47));

        }

    }

输出:

    47%

至此,你已经看到了格式化数字的几个不同的技术。另一方面,如何读取并解析包含格式化的数字的字符串?解析支持包含在NumberFormat中。例如:

    import java.util.Locale;

    import java.text.NumberFormat;

    import java.text.ParseException;

    public class DecimalFormat5 {

        public static void main(String args[]) {

            // 本地格式

            NumberFormat nf1 = NumberFormat.getInstance();

            Object obj1 = null;

            // 基于格式的解析

            try {

                obj1 = nf1.parse("1234,56");

            }

            catch (ParseException e1) {

                System.err.println(e1);

            }

            System.out.println(obj1);

            // 德国格式

            NumberFormat nf2 =

                NumberFormat.getInstance(Locale.GERMAN);

            Object obj2 = null;

            // 基于格式的解析

            try {

                obj2 = nf2.parse("1234,56");

            }

            catch (ParseException e2) {

                System.err.println(e2);

            }

            System.out.println(obj2);

        }

    }

这个例子分两部分,都是解析一个字符串:"1234,56"。第一部分使用本地格式解析,第二部分使用德国格式解析。当程序在美国运行,结果是:

    123456

    1234.56

换句话说,"1234,56"在美国被认为是一个巨大的整数"123456"而在德国被认为是一个小数"1234.56"。

还有格式化讨论的最后一个问题。在上面的例子中, DecimalFormat 和 NumberFormat 都被使用了。DecimalFormat 常用于获得很好的格式控制,而NumberFormat 常用于指定不同于本地的地区。如何结合两个类呢?

答案围绕着这样的事实:DecimalFormat是NumberFormat的一个子类,其实例被指定为特定的地区。因此,你可以使用NumberFormat.getInstance 指定一个地区,然后将结构强制转换为一个DecimalFormat对象。文档中提到这个技术可以在大多情况下适用,但是你需要用try/catch 块包围强制转换以防转换不能正常工作 (大概在非常不明显得情况下使用一个奇异的地区)。下面是一个这样的例子:

    import java.text.DecimalFormat;

    import java.text.NumberFormat;

    import java.util.Locale;

    public class DecimalFormat6 {

        public static void main(String args[]) {

            DecimalFormat df = null;

            // 得到一个NumberFormat 对象并

            // 强制转换为一个 DecimalFormat 对象

            try {

                df = (DecimalFormat)

                    NumberFormat.getInstance(Locale.GERMAN);

            }

            catch (ClassCastException e) {

                System.err.println(e);

            }

            // 设置格式模式

            df.applyPattern("####.00000");

            // format a number

            System.out.println(df.format(1234.56));

        }

    }



getInstance() 方法获得格式,然后调用applyPattern()方法设置格式模式,输出:

    1234,56000

如果你不关心国际化,可以直接使用DecimalFormat 。
0
0
分享到:
评论

相关推荐

    JSTL标签的formatNumber 格式化数字,四舍六入问题。

    在提供的`FormatNumberSupport.java`源代码文件中,可能包含了对`<fmt:formatNumber>`标签的支持函数或扩展,这些函数可能会帮助我们更灵活地控制数字格式化,包括自定义四舍五入行为。通过查看和理解这段源代码,...

    java 取整

    这个过程可以分为多种类型,包括向下取整、向上取整、四舍五入等。本篇文章将深入探讨Java中如何进行这些取整操作。 1. 向下取整:这是最简单的取整方式,它会丢弃任何小数部分,只保留整数部分。Java提供了`Math....

    文章分类:Java编程,java面试题1

    - `Math.round()` 方法对于正数采用四舍五入规则,而对于负数则采取四舍六入五凑偶的规则。 ### Short 类型的自增操作 9. **Short 类型的自增操作:** - `short s1 = 1; s1 = s1 + 1;` 会导致类型转换错误,因为...

    java 购物车 经典代码

    在这个过程中,可以考虑是否需要对价格进行四舍五入或者保留特定的小数位数。 购物车系统还可能涉及优惠策略,例如打折、满减、赠品等。这些策略可以通过策略模式实现,创建不同的优惠类,根据业务规则动态选择和...

    JAVA案例 第二篇:针对大数值取整数和小数、保留几位小数、特定位数的数值、自幂数.docx

    在JAVA中,我们可以使用`Math.floor()`和`Math.ceil()`函数来获取一个数的整数部分,而使用`Math.round()`函数则可以将数字四舍五入到最接近的整数。对于取小数部分,我们可以用原数减去整数部分得到: ```java ...

    蓝桥杯java习题.doc

    在Java中,我们可以使用BigDecimal类来实现四舍五入的操作。在上面的代码中,我们使用BigDecimal.setScale()方法来实现四舍五入,然后使用intValue()方法来获取结果。在while循环中,我们不断地计算前后两项的比值,...

    高手真经 13条Java核心技术

    - 强制类型转换直接截断小数部分,如需四舍五入,则应使用`Math.round()`方法。 3. **布尔类型的使用限制**: - 在Java中,避免将`boolean`类型与任何数值类型进行隐式或显式转换,除非特殊场景下使用三元表达式`...

    将用罗马数字表示的金额转化为中文大写表示

    本篇文章将详细讲解如何将用罗马数字表示的金额转化为中文大写表示,主要关注Java编程语言实现这一功能的方法。 首先,我们需要理解罗马数字的基本规则。罗马数字通常使用七个符号来表示数字:I(1)、V(5)、X...

    How Java’s Floating-Point Hurts Everyone Everywhere

    1. **动态指导舍入**:根据计算需求动态调整舍入模式。 2. **过载运算符**:通过过载运算符来支持更多类型的数学运算。 3. **几何计算**:对于三维几何问题,使用交叉乘积等方法可以提高计算效率和准确性。 总之,...

    Java版_经纬度两点间距离计算(LngLat)

    - 对结果进行四舍五入处理,保留四位小数,以提高结果的可读性。 ```java s = Math.round(s * 10000) / 10000; return s; ``` ##### 示例调用 ```java public static void main(String[] args) throws ...

    Java保留两位小数的实现方法

    本篇文章将详细探讨Java中如何实现这一功能,主要包括四舍五入和非四舍五入两种方式。 1. **四舍五入的方式** 在Java中,有多种方法可以实现四舍五入保留两位小数: - **使用`BigDecimal`类** `BigDecimal`是...

    关于数据库中保留小数位的问题

    在数据库中有时我们可能需要对一些数据进行处理,例如四舍五入、直接... 您可能感兴趣的文章:java精度计算代码 java指定精确小数位.net decimal保留指定的小数位数(不四舍五入)python通过floor函数舍弃小数位的方法用js

    java大数相加

    `MathContext`主要用于设置精度和舍入规则,但在简单的加法运算中,我们通常不需要设置它。 ```java import java.math.BigInteger; ``` 接着,我们可以创建`BigInteger`对象来存储大数。假设我们有两个大数字符串...

    排序算法原理与实现(java)编银行JAVA笔试题二编程资料程资料

    例如,在题目中,使用Math.floor()函数将-5.5舍入到-6。 题目8:Weblogic配置 Weblogic是Oracle公司的一款应用服务器。配置Weblogic为热启动方式的命令是Set PROJECT_MODE=true。 题目9:位运算 java中的位运算...

    Java 精确计算-double-float-String

    3. **设置精度**:为了控制计算结果的精度,可以使用`scale()`方法设定小数位数,或者`setScale(int newScale, RoundingMode roundingMode)`来设置精度和舍入模式。 4. **格式化输出**:使用`toPlainString()`方法...

    java类库和常用类简介-PPT.ppt

    - `round(double d)`/`round(float f)`:对参数进行四舍五入。 ##### 2. 示例代码 ```java public class MathDemo { public static void main(String args[]) { System.out.println(Math.ceil(3.45)); // 输出...

    Java中保留两位小数的四种方法实现实例

    在这个例子中,我们使用了BigDecimal.ROUND_HALF_UP作为舍入模式,它表示四舍五入。完成设置后,我们可以通过调用doubleValue方法来获取格式化后的double值。 最后一种方法是通过NumberFormat类实现的。...

    java.lang.Math

    - `round()`:四舍五入到最接近的整数,返回`long`或`int`类型。 - `ceil()`:向上取整,返回大于或等于给定数的最小整数。 - `floor()`:向下取整,返回小于或等于给定数的最大整数。 2. **浮点数操作**: - `...

    JAVA面试宝典之九阴真经

    - `Math.round()` 方法用于四舍五入,`Math.round(11.5)` 返回12,`Math.round(-11.5)` 返回-11。 8. **short类型的溢出问题** - `short s1 = 1; s1 = s1 + 1;` 这行代码会因为s1+1的结果是int型,需要显式转换为...

    java数学工具类Math详解(round方法)

    而`Math.round(-2.5)`和`Math.round(2.5)`都会返回2,因为它们在四舍五入后都是2.5,然后被向下或向上取整到最近的偶数。 6. `Math.PI`常量 `Math.PI`是`Math`类中预定义的一个常量,表示圆周率π,其值非常精确,...

Global site tag (gtag.js) - Google Analytics