java里的四舍五入(保留两位小数,返回double类型)

1、最简单的操作,验证之后是准确的四舍五入

double payPercent=123.345;
System.out.println((double)Math.round(payPercent*100)/100);

输出结果:123.35

2、使用BigDecimal

1、 ROUND_UP:远离零方向舍入。向绝对值最大的方向舍入,只要舍弃位非0即进位。(备注:就是只要第三位不是0,都往前进1。如1.121,输出会是1.13)

double payPercent=123.343;
BigDecimal bg = new BigDecimal(payPercent).setScale(2, RoundingMode.UP);
System.out.println(bg.doubleValue());

  输出结果123.35

2、 ROUND_DOWN:趋向零方向舍入。向绝对值最小的方向输入,所有的位都要舍弃,不存在进位情况。

double payPercent=123.349;
BigDecimal bg = new BigDecimal(payPercent).setScale(2, RoundingMode.DOWN);
System.out.println(bg.doubleValue());

  输出结果123.34

3、 ROUND_CEILING:向正无穷方向舍入。向正最大方向靠拢。若是正数,舍入行为类似于ROUND_UP,若为负数,舍入行为类似于ROUND_DOWN。Math.round()方法就是使用的此模式。(没测试)

4、 ROUND_FLOOR:向负无穷方向舍入。向负无穷方向靠拢。若是正数,舍入行为类似于ROUND_DOWN;若为负数,舍入行为类似于ROUND_UP。(没测试)

5、 HALF_UP:最近数字舍入(5进)。这是我们最经典的四舍五入。-----备注:都说这里是四舍五入,程序里的例子也是如此,但是经过测试,实际上是五舍六入

double payPercent=123.345;
BigDecimal bg = new BigDecimal(payPercent).setScale(2, RoundingMode.HALF_UP);
System.out.println(bg.doubleValue());

  输出结果是123.34

后来经过查找资料,有人说

double payPercent=123.345;
BigDecimal bg = new BigDecimal(String.valueOf(payPercent)).setScale(2, RoundingMode.HALF_UP);
System.out.println(bg.doubleValue());

  输出结果是123.35-----正确的四舍五入处理

6、 HALF_DOWN:最近数字舍入(5舍)。在这里5是要舍弃的。---即使按照上一步修改设置,也是会在5的时候舍去

7、 HAIL_EVEN:银行家舍入法。--(测试了下,好像5也是舍去的,具体不太清楚)

3、其他操作

double payPercent=123.345;
NumberFormat nf = NumberFormat.getNumberInstance();
// 保留两位小数
nf.setMaximumFractionDigits(2);
nf.setRoundingMode(RoundingMode.HALF_UP);
System.out.println(nf.format(payPercent));

DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(payPercent));            

  输出结果:123.34

原文地址:https://www.cnblogs.com/congcongdi/p/12208444.html

时间: 2024-08-13 07:12:08

java里的四舍五入(保留两位小数,返回double类型)的相关文章

java基础入门-float四舍五入保留两位小数注意的地方

float四舍五入保留两位小数注意的地方 最近在codewars做了一道非常简单的题目,但是它却花了我20来分钟,虽然最后解决了,但是中间发觉对于java的基础实在不行,回去要好好补一下 不说这么多,上题目:就是写一个方法,把英里每加仑换算成公里每升,保留两位数 一开始写的时候是没有问题,问题出现在保留两位数那里,我上一个测试代码 import java.util.regex.Pattern; public class Test { /* * 判断是否为整数 * * @param str 传入的

java 四舍五入 保留两位小数

1. 格式化字符串 1 java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00"); 2 float val=Float.valueOf(df.format(6.6666666666)); 2.BigDecimal.setScale()方法 格式化小数点 1 BigDecimal bd=new BigDecimal(6.666666666666); 2 double val=bd.setScale(2,BigDec

WinCE的C#编程,对float型进行四舍五入保留两位小数,小数进行四舍五入操作,Math.Round的应用案例。

private  float ConvertFloat4Se5Ru(float flotValue) { int iValue = (int)Math.Round(flotValue * 10000); //小数点后两位前移,并四舍五入 flotValue = (float)(iValue / 10000.00f); return flotValue; } 申明:以上文字为"武汉汉码科技有限公司"原创,转载时务必注明出处. 技术分享,沟通你我,共同进步!www.hanma-scan.c

BigDecimal四舍五入保留两位小数

import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class NumberFormatDemo { public static void main(String[] args) { // BigDecimal // 保留两位小数 System.out.println(new BigDecimal(0.2).setScale(2, BigDecimal

sql 四舍五入保留两位小数

select cast(362315*1.0/10000 as numeric(18,2)) select convert(decimal(18, 2), 362315 * 1.0 / 10000) 1. ROUND(该函数,只是负责四舍五入到两位小数,但是不负责截断 只留两位小数,例如下例:) 关于ROUND函数,我们平常理解为4舍5入,如: print ROUND(13.145, 2); 结果为:13.150 2. 使用转换类型,才能达到保留两位小数位的目的: select cast(13.

php保留两位小数并且四舍五入 保留两位小数并且不四舍五入

php保留两位小数并且四舍五入 $num = 5566.56831; echo sprintf("%.2f", $num); php保留两位小数并且不四舍五入 $num = 5566.56831; echo sprintf("%.2f",substr(sprintf("%.3f", $num), 0, -2)); php进一法取整 echo ceil(4.2); // 5 echo ceil(9.999); // 10 php舍去法取整 echo

java四舍五入(保留两位小数)

方式一:最简单的方法: float a = 123.4567f; // 这里的100就是2位小数点,如果要其它位,如4位,这里两个100改成10000 float b = (float)(Math.round(a*100))/100; 方式二: double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); 方式

数字四舍五入保留两位小数

http://www.cnblogs.com/fanyong/archive/2013/05/30/chinese_round.html C#中的Math.Round()并不是使用的"四舍五入"法.其实在VB.VBScript.C#.J#.T-SQL中Round函数都是采用Banker's rounding(银行家算法),即:四舍六入五取偶.事实上这也是IEEE的规范,因此所有符合IEEE标准的语言都应该采用这样的算法. .NET 2.0 开始,Math.Round 方法提供了一个枚举

JS 实现四舍五入保留两位小数并且添加千位分隔符

var a = "-123456789.078";a = (Math.round(a * 100) / 100).toFixed(2).toString().replace(/(\d)(?=(\d{3})+\.)/g, function($0, $1) {return $1 + ",";});console.log(a) 可以将方法写成function,也可以自己在VUE或者angular绑定数据的时候直接使用. 如果需要保留任意一位小数可以将100写成变量 fun

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

import java.math.BigDecimal;import java.text.DecimalFormat; import java.text.NumberFormat; public class format {    double f = 111231.5585;     public void m1() {         BigDecimal bg = new BigDecimal(f);         double f1 = bg.setScale(2, BigDecima