Java指定保留小数位数的方法

时间:2021-12-14 08:45:54
package com.qiyuan.util;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat; public class DecimalUtils { /**
* (1)按四舍五入保留指定小数位数,位数不够用0补充(一般不这么用)
* @param o:格式化前的小数
* @param newScale:保留小数位数
* @return 格式化后的小数
*/
/*public static String formatDecimalWithZero(Object o, int newScale) {
System.out.println("============================方法1================================");
return String.format("%." + newScale + "f", o);
}*/ /**
* (2)按四舍五入保留指定小数位数,位数不够用0补充
* @param d:格式化前的小数
* @param newScale:保留小数位数
* @return 格式化后的小数
*/
public static String formatDecimalWithZero(double d, int newScale) {
System.out.println("============================方法2================================");
String pattern = "0.";
for (int i = 0; i < newScale; i++) {
pattern += "0";
}
DecimalFormat df = new DecimalFormat(pattern);
return df.format(d);
} /**
* (3)按四舍五入保留指定小数位数,位数不够用0补充
* @param d 格式化前的小数 String形式
* @param newScale 保留小数位数
* @return 格式化后的小数
*/
public static String formatDecimalWithZero(String d, int newScale) {
System.out.println("============================方法3================================");
String pattern = "0.";
for (int i = 0; i < newScale; i++) {
pattern += "0";
}
DecimalFormat df = new DecimalFormat(pattern);
return df.format(Double.valueOf(d));
} /**
* (4)按四舍五入保留指定小数位数,小数点后仅保留有效位数
* @param d 格式化前的小数
* @param newScale 保留小数位数
* @return 格式化后的小数
*/
public static String formatDecimal(double d, int newScale) {
System.out.println("============================方法4================================");
String pattern = "#.";
for (int i = 0; i < newScale; i++) {
pattern += "#";
}
DecimalFormat df = new DecimalFormat(pattern);
return df.format(d);
} /**
* (5)按四舍五入保留指定小数位数,小数点后仅保留有效位数
* @param d 格式化前的小数
* @param newScale 保留小数位数
* @return 格式化后的小数
*/
public static String formatDecimal(String d, int newScale) {
System.out.println("============================方法5================================");
String pattern = "#.";
for (int i = 0; i < newScale; i++) {
pattern += "#";
}
DecimalFormat df = new DecimalFormat(pattern);
return df.format(Double.valueOf(d));
} /**
* (6)按指定舍入模式保留指定小数位数
* @param d 格式化前的小数
* @param newScale 保留小数位数
* @param roundingMode 舍入模式
* (RoundingMode.UP始终进一/DOWN直接舍弃/
* CEILING正进负舍/FLOOR正舍负进/
* HALF_UP四舍五入/HALF_DOWN五舍六进/
* HALF_EVEN银行家舍入法/UNNECESSARY抛出异常)
* @return 格式化后的小数
*/
public static double formatDecimal(double d, int newScale, RoundingMode roundingMode) {
System.out.println("============================方法6================================");
BigDecimal bd = new BigDecimal(d).setScale(newScale, roundingMode);
return bd.doubleValue();
} /**
* (7)按指定舍入模式保留指定小数位数
* @param d 格式化前的小数
* @param newScale 保留小数位数
* @param roundingMode 舍入模式
* (RoundingMode.UP始终进一/DOWN直接舍弃/
* CEILING正进负舍/FLOOR正舍负进/
* HALF_UP四舍五入/HALF_DOWN五舍六进/
* HALF_EVEN银行家舍入法/UNNECESSARY抛出异常)
* @return 格式化后的小数
*/
public static double formatDecimal(String d, int newScale, RoundingMode roundingMode) {
System.out.println("============================方法7================================");
BigDecimal bd = new BigDecimal(Double.valueOf(d)).setScale(newScale, roundingMode);
return bd.doubleValue();
} public static void main(String[] args) {
System.out.println("测试2=========按四舍五入保留指定小数位数,位数不够用0补充"+DecimalUtils.formatDecimalWithZero(123.456,5));
System.out.println("测试2=========按四舍五入保留指定小数位数,位数不够用0补充"+DecimalUtils.formatDecimalWithZero(123.45678901234,5));
System.out.println("测试3=========按四舍五入保留指定小数位数,位数不够用0补充"+DecimalUtils.formatDecimalWithZero("123.456",5));
System.out.println("测试3=========按四舍五入保留指定小数位数,位数不够用0补充"+DecimalUtils.formatDecimalWithZero("123.45678901234",5));
System.out.println("测试4=========按四舍五入保留指定小数位数,小数点后仅保留有效位数"+DecimalUtils.formatDecimal(123.456,5));
System.out.println("测试4=========按四舍五入保留指定小数位数,小数点后仅保留有效位数"+DecimalUtils.formatDecimal(123.45678901234,5));
System.out.println("测试5=========按四舍五入保留指定小数位数,小数点后仅保留有效位数"+DecimalUtils.formatDecimal("123.456",5));
System.out.println("测试5=========按四舍五入保留指定小数位数,小数点后仅保留有效位数"+DecimalUtils.formatDecimal("123.45678901234",5));
System.out.println("测试6=========按始终进一模式保留指定小数位数"+DecimalUtils.formatDecimal(123.45678901234,8,RoundingMode.UP));
System.out.println("测试6=========按直接截断模式保留指定小数位数"+DecimalUtils.formatDecimal(123.45678901234,8,RoundingMode.DOWN));
System.out.println("测试6=========按正进负舍模式保留指定小数位数"+DecimalUtils.formatDecimal(123.45678901234,8,RoundingMode.CEILING));
System.out.println("测试6=========按正进负舍模式保留指定小数位数"+DecimalUtils.formatDecimal(-123.45678901234,8,RoundingMode.CEILING));
System.out.println("测试6=========按正舍负进模式保留指定小数位数"+DecimalUtils.formatDecimal(123.45678901234,8,RoundingMode.FLOOR));
System.out.println("测试6=========按正舍负进模式保留指定小数位数"+DecimalUtils.formatDecimal(-123.45678901234,8,RoundingMode.FLOOR));
System.out.println("测试6=========按四舍五入模式保留指定小数位数"+DecimalUtils.formatDecimal(123.45678901234,8,RoundingMode.HALF_UP));
System.out.println("测试6=========按四舍五入模式保留指定小数位数"+DecimalUtils.formatDecimal(123.45678901534,8,RoundingMode.HALF_UP));
System.out.println("测试6=========按五舍六进模式保留指定小数位数"+DecimalUtils.formatDecimal(123.45678901534,8,RoundingMode.HALF_DOWN));
System.out.println("测试6=========按五舍六进模式保留指定小数位数"+DecimalUtils.formatDecimal(123.45678901634,8,RoundingMode.HALF_DOWN));
System.out.println("测试6=========按银行家舍入法模式保留指定小数位数"+DecimalUtils.formatDecimal(123.45678901434,8,RoundingMode.HALF_EVEN));
System.out.println("测试7=========按始终进一模式保留指定小数位数"+DecimalUtils.formatDecimal("123.45678901234",8,RoundingMode.UP));
System.out.println("测试7=========按直接截断模式保留指定小数位数"+DecimalUtils.formatDecimal("123.45678901234",8,RoundingMode.DOWN));
System.out.println("测试7=========按正进负舍模式保留指定小数位数"+DecimalUtils.formatDecimal("123.45678901234",8,RoundingMode.CEILING));
System.out.println("测试7=========按正进负舍模式保留指定小数位数"+DecimalUtils.formatDecimal("-123.45678901234",8,RoundingMode.CEILING));
System.out.println("测试7=========按正舍负进模式保留指定小数位数"+DecimalUtils.formatDecimal("123.45678901234",8,RoundingMode.FLOOR));
System.out.println("测试7=========按正舍负进模式保留指定小数位数"+DecimalUtils.formatDecimal("-123.45678901234",8,RoundingMode.FLOOR));
System.out.println("测试7=========按四舍五入模式保留指定小数位数"+DecimalUtils.formatDecimal("123.45678901234",8,RoundingMode.HALF_UP));
System.out.println("测试7=========按四舍五入模式保留指定小数位数"+DecimalUtils.formatDecimal("123.45678901534",8,RoundingMode.HALF_UP));
System.out.println("测试7=========按五舍六进模式保留指定小数位数"+DecimalUtils.formatDecimal("123.45678901534",8,RoundingMode.HALF_DOWN));
System.out.println("测试7=========按五舍六进模式保留指定小数位数"+DecimalUtils.formatDecimal("123.45678901634",8,RoundingMode.HALF_DOWN));
System.out.println("测试7=========按银行家舍入法模式保留指定小数位数"+DecimalUtils.formatDecimal("123.45678901434",8,RoundingMode.HALF_EVEN));
} }

Java指定保留小数位数的方法的更多相关文章

  1. C&num;保留小数位数的方法

    1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo();provi ...

  2. JAVA中保留小数的多种方法

    // 方式一:double f = 3.1516;BigDecimal b = new BigDecimal(f);double f1 = b.setScale(2, BigDecimal.ROUND ...

  3. C&num; decimal保留指定的小数位数,不四舍五入

    decimal保留指定位数小数的时候,.NET自带的方法都是四舍五入的. 项目中遇到分摊金额的情况,最后一条的金额=总金额-已经分摊金额的和. 这样可能导致最后一条分摊的时候是负数,所以自己写了一个保 ...

  4. java实验三——求平均数,数组排序(有关java保留小数位数,由于编译器版本未到1&period;5导致的报错format函数第二个参数不对,要求是Object&lbrack;&rsqb;)

    package hello; import java.util.Arrays; public class 实验三更正版 { public static void main(String[] args) ...

  5. Java四舍五入 保留小数

    java 四舍五入保留小数   // 方式一: double f = 3.1516; BigDecimal b = new BigDecimal(f); double f1 = b.setScale( ...

  6. 总结C&num;保留小数位数及百分号处理

    方法一: ); 方法二: Math.Round() 方法三: double dbdata = 0.55555; string str1 = dbdata.ToString("f2" ...

  7. C&num;保留小数位数

    1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo(); prov ...

  8. C&num;double转化成字符串 保留小数位数&comma; 不以科学计数法的形式出现

      在C#中大家都会遇到这种情况 double类型的数据,需要格式化(保留N未有效数字)或者是保留N为小数等情况,我们往往采取double.tostring("参数");的方法.下 ...

  9. 总结C&num;保留小数位数

    2.C#保留小数位N位,四舍五入 . decimal d= decimal.Round(decimal.Parse("0.55555"),2); 3.C#保留小数位N位四舍五入 M ...

随机推荐

  1. POJ3020——Antenna Placement&lpar;二分图的最大匹配&rpar;

    Antenna Placement DescriptionThe Global Aerial Research Centre has been allotted the task of buildin ...

  2. css去掉a标签点击后的虚线框(转自网络)

    outline是css3的一个属性,用的很少. 声明,这是个不能兼容的css属性,在ie6.ie7.遨游浏览器都不兼容. outline控制的到底是什么呢? 当聚焦a标签的时候,在a标签的区域周围会有 ...

  3. HDOJ&sol;HDU 1982 Kaitou Kid - The Phantom Thief &lpar;1&rpar;&lpar;字符串处理&rpar;

    Problem Description Do you know Kaitou Kid? In the legend, Kaitou Kid is a master of disguise, and c ...

  4. iOS开发 - Content hugging priority &amp&semi; Content compression resistance priority

    1. 什么是Content hugging priority 你可以把它想象成一根放在视图上的橡皮筋. 这根橡皮筋会组织视图超过它本身的固有大小(intrinsic content size). 它存 ...

  5. imperva-指定url禁止访问

    指定url禁止访问 应用到那个网站 访问一下查看告警

  6. hdoj2037 今年暑假不AC

    今年暑假不AC Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  7. 线程,协程,IO模型

    理论: 1.每创造一个进程,默认里面就有一个线程 2.进程是一个资源单位,而进程里面的线程才是CPU上的一个调度单位 3.一个进程里面的多个线程,是共享这个进程里面的资源的 4.线程创建的开销比进程要 ...

  8. 【排序】堆排序,C&plus;&plus;实现

    原创文章,转载请注明出处! 博客文章索引地址 博客文章中代码的github地址 # 预备知识     堆是一种特殊的树形数据结构,即完全二叉树.堆分为大根堆和小根堆,大根堆为根节点的值大于两个子节点的 ...

  9. Python文件操作大全

    Python 编程文件操作大全   文件打开模式 打开模式 执行操作 'r' 以只读方式打开文件(默认) 'w' 以写入的方式打开文件,会覆盖已存在的文件 'x' 如果文件已经存在,使用此模式打开将引 ...

  10. 模拟登陆并爬取Github

    因为崔前辈给出的代码运行有误,略作修改和简化了. 书上例题,不做介绍. import requests from lxml import etree class Login(object): def ...