Java 浮点数保留N有效数字
文章目录
- Java 浮点数保留6有效数字
- 例题示例
- 代码分析
- String.valueOf()
- MathContext类
- 介绍
- 构造函数
- HALF_UP舍入模式:
- 介绍
- 示例
- BigDecimal类
- 介绍
- 构造方法
- 字段(Fields)
- 成员方法(除法)
Java 浮点数保留6有效数字
例题示例
示例代码参考自:https://blog.csdn.net/weixin_50345586/article/details/119546074
题目
现在有 500500 毫升的肥宅快乐水,要均分给 33 名同学,每位同学可以分到多少毫升?请输出一个数字作为输出。保留 66 位有效数字,且不使用科学计数法。
代码
import java.math.BigDecimal;
import java.math.MathContext;public class test {public static void main(String[] args) {double a = 500, b = 3;BigDecimal m = new BigDecimal(String.valueOf(a/b));BigDecimal divisor = BigDecimal.ONE;MathContext mc = new MathContext(6);System.out.println(m.divide(divisor,mc));}
}
代码分析
String.valueOf()
方法功能简述:将传入的参数转换成字符串
MathContext类
java.lang.Objectjava.math.MathContext
介绍
java.math.MathContext类
提供了不可变对象,它们封装了上下文设置,并描述了数值运算符的某些规则,例如BigDecimal类实现的规则。
构造函数
- public MathContext(int setPrecision)
使用指定的精度和 HALF_UP 舍入模式构造一个新的 MathContext 。
这里指定的精度就是指保留几位有效数字,可在使用BigDecimal类
的divide()
方法时用到。
HALF_UP舍入模式:
java.lang.Objectjava.lang.Enum<RoundingMode>java.math.RoundingMode
介绍
该舍入模式是枚举类型RoundingMode下定义的常量之一。该模式就是平时使用的四舍五入。
示例
输入数据 | 使用HALF_UP模式将输入数据舍入到一位数 |
---|---|
5.5 | 6 |
2.5 | 3 |
1.6 | 2 |
1.1 | 1 |
1.0 | 1 |
-1.0 | -1 |
-1.1 | -1 |
-1.6 | -2 |
-2.5 | -3 |
-5.5 | -6 |
BigDecimal类
java.lang.Objectjava.lang.Numberjava.math.BigDecimal
介绍
常用于大数运算。当运算涉及到较大的数字时,使用浮点数如float,double会出现精度丢失的问题,导致结果不准确。
构造方法
- public BigDecimal(int val)
- public BigDecimal(double val)
- public BigDecimal(long val)
- public BigDecimal(char[ ] in)
- public BigDecimal(String val)
- public BigDecimal(BigInteger val)
注:使用浮点数类型
double
的构造方法时有风险,输出的数据精度不准确。推荐使用传入参数为String类
的构造函数。BigDecimal a = new BigDecimal(12.223);System.out.println(a);
输出结果如下图所示,这显然与传入的12.223不同。
字段(Fields)
ZERO
:public static final BigDecimal ZEROONE
: public static final BigDecimal ONETEN
:public static final BigDecimal TEN
用上述三个方法给
BigDecimal对象
赋值,就能得到BigDecimal类型的值0,1,10。
BigDecimal divisor = BigDecimal.ONE;
System.out.println(divisor); //输出结果为1
成员方法(除法)
BigDecimal divide
:public BigDecimal divide(BigDecimal divisor)
该方法返回一个BigDecimal类型的值
this / divisor
BigDecimal divide
:public BigDecimal divide(BigDecimal divisor,MathContext mc)
该方法返回一个BigDecimal类型的值
this / divisor
注: 使用上述
divide
方法时,第一个参数必须是BigDecimal
类型的数据,不能偷懒直接传整形的数据(这时就可以用到ZERO
,ONE
,TEN
这三个字段)。
Java 浮点数保留N有效数字相关推荐
- java定义一个方法,返回一个浮点数保留两位小数,考虑四舍五入的结果
java定义一个方法,返回一个浮点数保留两位小数,考虑四舍五入的结果 /*** 定义一个方法* 返回一个浮点数保留两位小数* 考虑四舍五入的结果*/ public class Test21 {publ ...
- 【Java】保留X位有效数字
最近发现有些洛谷的题要求输出X位有效数字,但网上都是保留X位小数,不合要求,这里给一个比较实用的保留浮点有效数字的函数: private static double roundToSignifican ...
- java 格式化 浮点数_DecimalFormat的用法 Java 浮点数 Float Double 小数 格式化 保留小数位后几位等...
DecimalFormat的用法 Java 浮点数 Float Double 小数 格式化 保留小数位后几位等 DecimalFormat df = new DecimalFormat(); dou ...
- 用java编写保留两位小数_Java保留两位小数的几种写法总结
摘要:这篇Java开发技术栏目下的"Java保留两位小数的几种写法总结",介绍的技术点是"Java保留两位小数.保留两位小数.两位小数.Java.小数.总结", ...
- java %2f_java保留两位的几种写法
本文列举了几个方法: 1. 使用java.math.BigDecimal 2. 使用java.text.DecimalFormat 3. 使用java.text.NumberFormat 4. 使用j ...
- Java double 保留一个小数、理解BigDecimal、Java解决精度问题
Java double 保留一个小数 两种方法 @Testpublic void test2() {double f = 234.353333000000000000000000;BigDecimal ...
- java怎么保留两位小数?具体方法是什么?
很多小伙伴在使用java的时候可能会遇到这样的需求:一个浮点型的数据,我只需要保留两位小数即可.而现实中往往的输出情况却大相径庭.其实这都是数据没有进行格式化的结果,java提供了很多方法来进行数据格 ...
- 总结:java除法保留两位小数
java除法保留两位小数: java中,当两个整数相除时,由于小数点以后的数字会被截断,运算结果将为整数,此时若希望得到运算结果为浮点数, 必须将两整数其一或是两者都强制转换为浮点数.因为int 是整 ...
- mysql数字有效位_保留十位有效数字
SQL四舍五入保留浮点数的十位有效数字 无 DECLARE @execsql NVARCHAR(1024)SET @execsql =N'SELECT CAST('+CAST(125.36541235 ...
最新文章
- 简单配置nginx反向代理,实现跨域请求
- 深入.NET 4.0之,LazyT点滴
- smooth_L1_loss_layer.cu解读 caffe源码初认识
- [@Controller]4 详解@ModelAttribute
- bootstrap3 商品列表_Bootstrap3基础 list-inline 无序列表横向显示
- python 变量引用_Python 知识要点:变量及引用
- JavaScript的this关键字的调用位置和绑定
- Oracle 19c: RAC 集群技术的坚持与放弃(含PPT下载)
- 反三角函数在线计算机,f的换算(反三角函数计算器在线)
- win10安装ubuntu系统出现的一些问题以及解决方案
- python赋值标志_Python中的赋值、引用和深浅拷贝
- qt开发用的人多吗_新房认筹猫腻多!开发商只是为达到这个目的才认筹,你入坑了吗?...
- 有哪些知名的短信接口提供商
- html左右箭头实现图片滚动,jquery控制左右箭头滚动图片列表的实例
- pencil导出html,用Apple Pencil做笔记:要的就是这个感觉!
- 学计算机专业必须要买电脑吗,上大学需要买电脑吗 该如何选择合适的电脑
- Spring Security--基于注解访问控制 @Secured@PreAuthorize
- qt4.8.7 2016年4月18日 error reading collection file qthelpcollection cannot load sql
- Linux文本处理工具实践
- 标签设计打印软件:LabelJoy 6.23.0 Crack