Double保留指定小数位数的五种方法
方法一、
// 方法一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。
Double保留指定小数位数的五种方法相关推荐
- Excel四舍五入保留指定小数位数的2种操作方法
如图所示需要对各种小数位数的小数呢,保留2位的四舍五入的操作,看小编的2种方法吧 (ROUND函数) (方方格子插件) 1.先看动图演示吧 2.我们可以在对应单元格输入下图的公式内容 3.确定后即可看 ...
- 保留指定小数位数js函数封装
保留指定小数位数js函数封装 不用正则保留指定小数位数 函数入参定义, num:需要处理的数据 len:保留小数位数,默认2位 判断类型,统一转字符串处理 空值return 空字符串 numStr.r ...
- java精确小数位数的几种方法
java中精确小数位数的几种方法 /* * 这里假设精确到小数点后5位 */ public class AccurateDecimalPart { public static void main(St ...
- Lua保留指定小数位数
默认会四舍五入 比如:%0.2f 会四舍五入后,保留小数点后2位 print(string.format("%.1f",0.26)) ---会输出0.3,而不是0.2 Lua保留一 ...
- c# 从一组数中随机抽取一定个数_C#产生指定范围随机数的几种方法-亮术网
在开发过程中,常常要产生随机数,如生成静态 html 网页时,文件名通常用产生随机数的方式获得,生成定单的时候,定单号也可以用产生随机数的方式获得等. 在 C# 中,一般都用 Random 产生随机数 ...
- Java double 保留一个小数、理解BigDecimal、Java解决精度问题
Java double 保留一个小数 两种方法 @Testpublic void test2() {double f = 234.353333000000000000000000;BigDecimal ...
- JavaScript 指定小数位数 toFixed() 方法
JavaScript Number 对象参考手册 定义和用法 toFixed() 方法可把 Number 四舍五入为指定小数位数的数字. 语法 NumberObject.toFixed(num) 参数 ...
- 把 Number 四舍五入为指定小数位数的数字
// 创建 Number 对象var objNum = new Number(23);var num = 123.456;//把 Number 四舍五入为指定小数位数的数字console.log(nu ...
- 小程序页面之间数据传递的五种方法
小程序页面之间数据传递的五种方法 目录 小程序页面之间数据传递的五种方法 **使用 `wx.navigateTo()` 时,在 url 中拼接,这种方法适用于数据量少的情况** **使用 `wx.na ...
最新文章
- Windows下搭建PHP开发环境
- Python入门系列之字符编码
- Access里执行SQL
- ubuntu下shutter的用法
- linux下创建新用户以及删除
- 039_JavaScript对象访问器
- GitLab-怎样使用GitLab托管项目
- python第三周测试_python第三周小测
- 讯飞输入法将深度神经网络DNN技术应用于语音识别达到业界领先水平
- 0-Day CI : 我是Linux内核质检员
- gmp计算机分类,GMP附录——计算机化系统汇总.pptx
- 亲测比较好用的各类软件
- 【第38题】2019年OCP认证12C题库062考试最新考试原题
- java中的String和ArrayList类
- 在计算机领域做研究的一些想法
- 【t006】三角形分形描绘问题
- win10用户注销后该怎么办?如何彻底删除原有的用户名
- 三极管放大电路参数计算
- 【Html标签学习】表单标签
- 计算机应用技术081203 专业硕士,计算机应用技术专业081203-河南理工大学研究生处...