BigDecimal 保留小数位

public class test1_format {

    public static void main(String[] args) {
        BigDecimal decimal = new BigDecimal("1.12345");
        System.out.println(decimal);
        BigDecimal setScale = decimal.setScale(4,BigDecimal.ROUND_HALF_DOWN);
        System.out.println(setScale);

        BigDecimal setScale1 = decimal.setScale(4,BigDecimal.ROUND_HALF_UP);
        System.out.println(setScale1);
    }
}

参数定义

ROUND_CEILING 
Rounding mode to round towards positive infinity. 
向正无穷方向舍入

ROUND_DOWN 
Rounding mode to round towards zero. 
向零方向舍入

ROUND_FLOOR 
Rounding mode to round towards negative infinity. 
向负无穷方向舍入 

ROUND_HALF_DOWN
 
Rounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down. 
向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5

ROUND_HALF_EVEN 
Rounding mode to round towards the "nearest neighbor" unless both neighbors are equidistant, in which case, round towards the even neighbor. 
向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP ,如果是偶数,使用ROUND_HALF_DOWN

ROUND_HALF_UP 
Rounding mode to round towards "nearest neighbor" unless both neighbors are equidistant, in which case round up. 
向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6 

ROUND_UNNECESSARY 
Rounding mode to assert that the requested operation has an exact result, hence no rounding is necessary. 
计算结果是精确的,不需要舍入模式

ROUND_UP 
Rounding mode to round away from zero. 
向远离0的方向舍入

原文地址:https://www.cnblogs.com/summary-2017/p/9535627.html

时间: 2024-08-03 18:41:44

BigDecimal 保留小数位的相关文章

sprintf() 处理 float类型的数字,保留小数位等。

关于 sprintf()的百科地址: http://baike.baidu.com/view/1295144.htm sprintf(szText, "%[填空字元][宽度][.精度]f", v); 填空字元: 0 的话表示空格填 0:空格是内定值,表示空格就放着. 1. 设置保留小数位长度, 注意: 会四舍五入 2. 设置输出宽度,不够部分用空格填充 3. 设置输出宽度和[填充字符],不够部分,用[填充字符:0]来填充  2014-08-04

C# 当double数值较大且小数位过多时转化成字符串并保留小数位

今天在C#中碰到了一个问题,需要将double转换成字符串显示,要求保留小数位. 在网上查询了一下相关的文章 具体如下: double temp=3.1415926; (F)Fixed point:string str1=temp.toString("f1");//保留一位小数 四舍五入 结果:3.1 (F)Fixed point:string str2=temp.toString("f2");//保留两位小数,四舍五入 下面一次类推 结果:3.14 (N)Numb

解决使用DbContext保存Decimal数据时总是保留小数位2位问题

通过System.Data.Entity.DbContext保留Decimal类型数据时,默认只保留小数位2位.要解决该问题,可以通过在OnModelCreating事件中添加相应代码即可,具体参考如下代码中将shop.Longitude设置为小数位20位: public class UserDbContext : System.Data.Entity.DbContext { public UserDbContext() : base("MyContext") { this.Confi

关于 BigDecimal 的小数位的入舍去操作

BigDecimal  保留小数 的 入舍操作, 6 中 策略 : RoundingMode 里面的 枚举 和      BigDecimal  的  常量 是等价的  UP(BigDecimal.ROUND_UP), 最后说说 6种策略的区别: RoundingMode.CEILING:保留小数以后的全部都收 RoundingMode.DOWN:保留小数以后,向着靠近0 的 地方舍去 或者收,也就是 正数 舍去 ,负数收 RoundingMode.FLOOR:保留小数以后的全部都舍去 Roun

BigDecimal保留小数处理

最近在处理支付相关的需求,涉及到金额的问题,采用传统的基本数据类型处理会存在误差,因此采用BigDecimal对象进行处理. 一.构造BigDecimal对象的方式 BigDecimal(int)       创建一个具有参数所指定整数值的对象. BigDecimal(double) 创建一个具有参数所指定双精度值的对象. BigDecimal(long)    创建一个具有参数所指定长整数值的对象. BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象. 注:建

python保留小数位

前言 保留小数位是我们经常会碰到的问题,尤其是刷题过程中.那么在python中保留小数位的方法也非常多,但是笔者的原则就是什么简单用什么,因此这里介绍几种比较简单实用的保留小数位的方法: 方法一:format函数 >>> print('{:.3f}'.format(1.23456)) 1.235 >>> print(format(1.23456, '.2f')) 1.23 正如上面代码所示,format有不同用法,前者使用了占位符{},使用占位符可以同时输出多个,后者一

java.math.BigDecimal保留两位小数,保留小数,精确位数

http://blog.csdn.net/yuhua3272004/article/details/3075436 使用java.math.BigDecimal工具类实现 java保留两位小数问题: 方式一(四舍五入形式保留两位小数,注意模式ROUND_HALF_UP): 四舍五入   double   f   =   111231.5585;   BigDecimal   b   =   new   BigDecimal(f);   double   f1   =   b.setScale(2

蓝桥杯入门训练——圆的面积(保留小数位)

这一题主要是考察四舍五入,保留小数点后n位 以下是找到的几个保留小数7位的方法 方法一:使用DecimalFormat类 //1.#.00 表示两位小数 #.0000四位小数 以此类推... double d1=3.14159265358979323; DecimalFormat df=new DecimalFormat("#.0000000"); String dd1=df.format(d1); //返回的是一个String类型的值 System.out.println(Doubl

BigDecimal保留两位小数,或指定精确的位数

public static void main(String[] args) { BigDecimal t1 = new BigDecimal("3.15289"); BigDecimal t2 = new BigDecimal("-3.11289"); // 新的t1值,并初始化 BigDecimal newt1 = BigDecimal.ZERO; // 新的t2值,并初始化 BigDecimal newt2 = BigDecimal.ZERO; // 精确一位