Double保留指定小数位数的五种方法

您所在的位置:网站首页 gis双精度设置了精度和小数位数怎么不显示小数位数 Double保留指定小数位数的五种方法

Double保留指定小数位数的五种方法

2024-07-14 23:37| 来源: 网络整理| 查看: 265

方法一、 // 方法一 public void test1() { double d = 0.3456789; BigDecimal bd = new BigDecimal(d); double test1 = bd.setScale(2, BigDecimal.ROUND_DOWN).doubleValue(); // 保留两位小数,不四舍五入(可选舍入模式) System.out.println("方法一:" + test1); //0.34 } BigDecimal

Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。

参数说明: setScale(newScale, roundingMode) newScale:要返回的 BigDecimal 值的标度。 roundingMode:要应用的舍入模式。 返回:一个 BigDecimal,其标度为指定值,其非标度值可以通过此 BigDecimal的非标度值乘以或除以十的适当次幂来确定。 舍入模式: ROUND_CEILING 接近正无穷大的舍入模式。 ROUND_DOWN 从不对舍弃部分前面的数字加1,即截短。 ROUND_FLOOR 接近负无穷大的舍入模式。 ROUND_HALF_DOWN 向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为上舍入的舍入模式。 ROUND_HALF_EVEN 向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。 ROUND_HALF_UP 向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式。 ROUND_UNNECESSARY 断言请求的操作具有精确的结果,因此不需要舍入(如果对获得精确结果的操作指定此舍入模 式,则抛出ArithmeticException)。 ROUND_UP 始终对非舍弃部分前面的数字加1。 方法二、 // 方法二 public void test2() { double d = 0.3456789; // #.00 表示两位小数 DecimalFormat df = new DecimalFormat("#0.00"); // 保留两位小数,四舍五入 System.out.println("方法二:" + df.format(d)); //0.35 } DecimalFormat

DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。

参数说明: 0 阿拉伯数字 # 阿拉伯数字如果不存在就显示为空 . 小数分隔符或货币小数分隔符 - 减号 , 分组分隔符 E 分割科学技术法中的尾数和指数。在前缀和后缀中无需添加引号 ; 分隔正数和负数子模式 % 乘以100并显示为百分数 \u2030 乘以1000并显示为千分数 \u00A4 货币记号,由货币符号替换。如果两个同时出现,则用国际货币符号替换。如果出现在某个模式中,则使用货币小数分隔符,而不使 用小数分隔符 ' 用于在前缀或或后缀中为特殊字符加引号,例如 "'#'#" 将 123 格式化为 "#123"。要创建单引号本身,请连续使用两个单引号: "# o''clock" 1.整数:若是n个0,就从个位开始向高位填充,如果有值就是原来的值,没有就填充0。 若都是#,没有实际意义,不管是几个#,最后的结果都是原来的整数。0和#配合使用,只能是"##00",不能是"00##",就是#在前0在后。 实现是上面的合集。 2.小数:是可以保留小数点后几位的(几个0后或几个#)。 若n个0,就是保留n位小数,小数不足的部分用0填充。 若n个#,就是保留n位小数,小数不足部分没有就是没有。 方法三、 // 方法三 public void test3() { double d = 0.3456789; // %.2f %.表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型 System.out.println("方法三:" + String.format("%.2f", d));// 保留两位小数,四舍五入 //0.35 } String.format 字符串常规类型格式化的两种重载方式 format(String format, Object… args) 使用当前本地区域对象(locale.getDefault())格式化字符串 format(Locale locale, String format, Object… args) 自定义本地区域对象格式化字符串 方法四、 // 方法四 public void test4() { double d = 0.3456789; NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMaximumFractionDigits(2); // 保留两位小数,四舍五入 System.out.println("方法四:" + nf.format(d)); //0.35 } NumberFormat

可用于格式化和解析任何语言环境的数值。

参数说明: NumberFormat.getInstance 返回当前缺省语言环境的缺省数值格式; NumberFormat.getCurrencyInstance 返回当前缺省语言环境的通用格式。 NumberFormat.getPercentInstance 返回当前缺省语言环境的百分比格式。 NumberFormat.getNumberInstance 返回指定语言环境的通用数值格式。 setMinimumFractionDigits() 设置数值的小数部分允许的最小位数,不足的位数以0补位,超出的话按实际位数输出。 setMaximumFractionDigits() 设置数值的小数部分允许的最大位数,不足不补0。 setMaximumIntegerDigits() 设置数值的整数部分允许的最大位数。 setMinimumIntegerDigits() 设置数值的整数部分允许的最小位数。 方法五、 // 方法五 public void test5() { double d = 0.3456789; // 保留两位小数,四舍五入 System.out.println("方法五:" + (double) Math.round(d * 100) / 100.0); //0.35 } round()

round()方法可把一个数字舍入为最接近的整数。

参数说明: 如果参数的小数部分大于0.5,则舍入到相邻的绝对值更大的整数。 如果参数的小数部分小于0.5,则舍入到相邻的绝对值更小的整数。 如果参数的小数部分恰好等于0.5,则舍入到相邻的在正无穷(+∞)方向上的整数。 例如,3.5 将舍入为 4.0,而 -3.5 将舍入为 -3.0。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3