`
fly533
  • 浏览: 109331 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

java 四舍五入的问题--五舍六入

    博客分类:
  • java
阅读更多
      Double dd=0.125;
		try {
			DecimalFormat df=new DecimalFormat("#.##"); 
			System.out.println(df.format(dd));
		} catch (RuntimeException e) {
			e.printStackTrace();
		}
		
		MathContext v = new MathContext(2,RoundingMode.HALF_DOWN);   
        BigDecimal a = new BigDecimal("0.875",v);   
        System.out.println(a);   
        
        float a1 = 123.2354f; 
        float b = (float)(Math.round(a1*100))/100; 
        System.out.println(b);
        
        
        float ft = 134.3445f; 
        int scale = 2;//设置位数 
        int roundingMode = 4;//表示四舍五入,可以选择其他舍值方式,例如去尾,等等. 
        BigDecimal bd = new BigDecimal((double)ft); 
        bd = bd.setScale(scale,roundingMode); 
        ft = bd.floatValue(); 
        System.out.println(ft);


结果为:
0.12
0.87
123.24
134.34

结论:
  只有第3,4 种方法实现了真正的四舍五入, 1,2种方法到是“五舍六入”
  至于为什么会这样?java是有解释的,可以查查看,匆忙写下这边就不在解释了。
分享到:
评论
1 楼 fly533 2011-11-02  

package test;

import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.text.DecimalFormat;

public class testFormat {
	public static void main(String[] args) {
		//第1种
		Double dd = 0.125;
		try {
			DecimalFormat df = new DecimalFormat("#.##");
			System.out.println(df.format(dd));
		} catch (RuntimeException e) {
			e.printStackTrace();
		}
		
		//第2种
		MathContext v = new MathContext(2, RoundingMode.HALF_DOWN);
		BigDecimal a = new BigDecimal("0.875", v);
		System.out.println(a);
		
		//第3种
		float a1 = 123.2354f;
		float b = (float) (Math.round(a1 * 100)) / 100;
		System.out.println(b);
		
		//第4种
		float ft = 134.3445f;
		int scale = 2;// 设置位数
		int roundingMode = 4;// 表示四舍五入,可以选择其他舍值方式,例如去尾,等等.
		BigDecimal bd = new BigDecimal((double) ft);
		bd = bd.setScale(scale, roundingMode);
		ft = bd.floatValue();
		System.out.println(ft);
		
		//第5种
		MathContext v2 = new MathContext(2, RoundingMode.HALF_UP);
		BigDecimal a2 = new BigDecimal("0.875", v2);
		System.out.println(a2);
		
	}

}


第2种方法到是“五舍六入” 是因为传入的参数不对,所以出现“五舍六入” ,四舍五入见第5种方法

相关推荐

    java 四舍五入java 四舍五入java 四舍五入

    java 四舍五入java 四舍五入java 四舍五入java 四舍五入java 四舍五入java 四舍五入java 四舍五入java 四舍五入java 四舍五入

    java四舍五入

    Java 四舍五入方法详解 Java 四舍五入方法是指在 Java 语言中对数字进行四舍五入操作的方法。四舍五入是一种常用的数字截断方法,经常用于金融、科学计算和其他领域。 在 Java 语言中,四舍五入方法可以通过多种...

    java 四舍五入 需要的朋友看看

    在Java编程语言中,四舍五入是一种常见的数学操作,用于处理浮点数或小数,使其更加符合实际应用需求。本文将详细解析如何在Java中实现四舍五入,并探讨不同方法的适用场景。 ### Java四舍五入的基础概念 四舍五入...

    四舍五入_四舍五入问题_源码

    在这个场景中,标题"四舍五入_四舍五入问题_源码"暗示我们将讨论如何在编程中实现四舍五入操作,特别是与计算苹果单价和数量相关的总价问题。描述提到“输入苹果的单价及购买的数量,计算总价,分别显示总价的总价...

    js四舍五入-保留两位小数

    在Java中,可以使用`BigDecimal`类来实现四舍五入并保留两位小数的功能。`BigDecimal`类提供了非常强大的高精度算术运算能力,非常适合处理财务计算等场景。 **示例代码**: ```java import java.math.BigDecimal;...

    关于java的四舍五入问题

    在Java编程语言中,处理数字的四舍五入操作是一项常见的任务,特别是在计算、财务或者数据分析等场景。本文将深入探讨Java中如何进行四舍五入,并基于提供的`Arith.java`文件,来分析其可能包含的实现方式。 首先,...

    java 数字格式化程序(不需四舍五入)

    浮点数任意保留数位小数但不需四舍五入小程序

    java计算四舍五入,float转int,string转int做计算

    提供两个思路,一个是float转int这种。另外就是就是string转int的除法计算。 这只是两个简单的小例子。可以借鉴看看。

    计算2000年1月1日到现在有多少月,多少周(四舍五入)。

    根据给定的信息,本文将详细解释如何在Oracle数据库中计算从2000年1月1日至今经过了多少个月和多少个星期,并且结果需要进行四舍五入处理。 ### Oracle数据库中的日期函数 在Oracle数据库中,进行日期计算是非常...

    java 四舍五入保留小数的实现方法

    在Java编程语言中,有时我们需要对浮点数进行四舍五入操作,以便在特定场景下得到精确的小数值。以下是一些常用的Java四舍五入保留小数的实现方法: ### 方法一:使用`BigDecimal` `BigDecimal`是Java中处理高精度...

    详解java的四舍五入与保留位示例

    Java中的四舍五入与保留位示例 Java中的四舍五入是指对数字进行舍入操作,以达到指定的位数精度。四舍五入规则是指在小数点后保留指定位数的数字,如果舍弃位大于5则进位,否则舍弃。在Java中,四舍五入可以使用...

    四舍五入中小数位问题

    ### 四舍五入中小数位问题:深入探讨与科学解决方案 #### 一、四舍五入的传统理解及其局限性 在数学运算中,四舍五入是一种常见的处理小数精度的方法,尤其当数据需要简化或适配特定显示格式时。传统上,四舍五入...

    加、减、乘、除、平方、四舍六入五成双

    加、减、乘、除、平方、四舍六入五成双

    金额的大小转换及小数的四舍五入处理

    在处理金融数据时,精确到一定小数位的四舍五入操作是必需的,以避免因精度问题导致的计算误差。在Python中,我们可以使用内置的`round`函数,但在处理金钱时,最好使用`decimal`模块,因为它提供了更高精度的浮点数...

    Java四舍五入时保留指定小数位数的五种方式

    在Java编程语言中,对数字进行四舍五入并保留指定的小数位数是常见的需求。以下是五种不同的方法来实现这一目标: 1. **使用`BigDecimal`类**: `BigDecimal`是Java中用于处理高精度、大数值计算的类,提供了多种...

    java中DecimalFormat四舍五入用法详解

    Java 中 DecimalFormat 四舍五入用法详解 DecimalFormat 是 Java 中 NumberFormat 的一个具体子类,用于格式化十进制数字。它可以支持不同类型的数,包括整数、定点数、科学记数法表示的数、百分数和金额等这些内容...

    sishewuru.rar_四舍五入

    标题 "sishewuru.rar_四舍五入" 暗示了我们关注的主题是关于数值计算中的四舍五入操作。在这个主题下,我们将深入探讨四舍五入的定义、用途、方法以及在编程中实现四舍五入的常见算法。 四舍五入是一种在数学和...

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

    当我们遇到四舍六入的问题时,通常是因为默认的四舍五入规则不符合需求。JSTL的`<fmt:formatNumber>`标签在处理小数时,默认使用Java的`BigDecimal`类进行计算,遵循银行家舍入法则(Banker's Rounding),它在四舍...

    java 四舍五入使java保留2位小数示例讲解

    在Java编程语言中,四舍五入是一种常见的数学操作,特别是在处理浮点数时,我们可能需要将结果精确到特定的小数位数。本示例将深入讲解如何使用Java实现四舍五入并保留两位小数。这在财务计算、统计分析和其他需要...

Global site tag (gtag.js) - Google Analytics