文章目录

  • 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 ZERO
  • ONE: public static final BigDecimal ONE
  • TEN: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类型的数据,不能偷懒直接传整形的数据(这时就可以用到ZEROONETEN这三个字段)。


Java 浮点数保留N有效数字相关推荐

  1. java定义一个方法,返回一个浮点数保留两位小数,考虑四舍五入的结果

    java定义一个方法,返回一个浮点数保留两位小数,考虑四舍五入的结果 /*** 定义一个方法* 返回一个浮点数保留两位小数* 考虑四舍五入的结果*/ public class Test21 {publ ...

  2. 【Java】保留X位有效数字

    最近发现有些洛谷的题要求输出X位有效数字,但网上都是保留X位小数,不合要求,这里给一个比较实用的保留浮点有效数字的函数: private static double roundToSignifican ...

  3. java 格式化 浮点数_DecimalFormat的用法 Java 浮点数 Float Double 小数 格式化 保留小数位后几位等...

    DecimalFormat的用法  Java 浮点数 Float Double 小数 格式化 保留小数位后几位等 DecimalFormat df = new DecimalFormat(); dou ...

  4. 用java编写保留两位小数_Java保留两位小数的几种写法总结

    摘要:这篇Java开发技术栏目下的"Java保留两位小数的几种写法总结",介绍的技术点是"Java保留两位小数.保留两位小数.两位小数.Java.小数.总结", ...

  5. java %2f_java保留两位的几种写法

    本文列举了几个方法: 1. 使用java.math.BigDecimal 2. 使用java.text.DecimalFormat 3. 使用java.text.NumberFormat 4. 使用j ...

  6. Java double 保留一个小数、理解BigDecimal、Java解决精度问题

    Java double 保留一个小数 两种方法 @Testpublic void test2() {double f = 234.353333000000000000000000;BigDecimal ...

  7. java怎么保留两位小数?具体方法是什么?

    很多小伙伴在使用java的时候可能会遇到这样的需求:一个浮点型的数据,我只需要保留两位小数即可.而现实中往往的输出情况却大相径庭.其实这都是数据没有进行格式化的结果,java提供了很多方法来进行数据格 ...

  8. 总结:java除法保留两位小数

    java除法保留两位小数: java中,当两个整数相除时,由于小数点以后的数字会被截断,运算结果将为整数,此时若希望得到运算结果为浮点数, 必须将两整数其一或是两者都强制转换为浮点数.因为int 是整 ...

  9. mysql数字有效位_保留十位有效数字

    SQL四舍五入保留浮点数的十位有效数字 无 DECLARE @execsql NVARCHAR(1024)SET @execsql =N'SELECT CAST('+CAST(125.36541235 ...

最新文章

  1. 简单配置nginx反向代理,实现跨域请求
  2. 深入.NET 4.0之,LazyT点滴
  3. smooth_L1_loss_layer.cu解读 caffe源码初认识
  4. [@Controller]4 详解@ModelAttribute
  5. bootstrap3 商品列表_Bootstrap3基础 list-inline 无序列表横向显示
  6. python 变量引用_Python 知识要点:变量及引用
  7. JavaScript的this关键字的调用位置和绑定
  8. Oracle 19c: RAC 集群技术的坚持与放弃(含PPT下载)
  9. 反三角函数在线计算机,f的换算(反三角函数计算器在线)
  10. win10安装ubuntu系统出现的一些问题以及解决方案
  11. python赋值标志_Python中的赋值、引用和深浅拷贝
  12. qt开发用的人多吗_新房认筹猫腻多!开发商只是为达到这个目的才认筹,你入坑了吗?...
  13. 有哪些知名的短信接口提供商
  14. html左右箭头实现图片滚动,jquery控制左右箭头滚动图片列表的实例
  15. pencil导出html,用Apple Pencil做笔记:要的就是这个感觉!
  16. 学计算机专业必须要买电脑吗,上大学需要买电脑吗 该如何选择合适的电脑
  17. Spring Security--基于注解访问控制 @Secured@PreAuthorize
  18. qt4.8.7 2016年4月18日 error reading collection file qthelpcollection cannot load sql
  19. Linux文本处理工具实践
  20. 标签设计打印软件:LabelJoy 6.23.0 Crack

热门文章

  1. JS跨域使用jsonp
  2. Linux 服务器突然连接不上
  3. 华为 Java 面试真题,拥有百万粉丝的大牛讲述学 Java 的历程
  4. JAVA计算机毕业设计防疫宣传系统Mybatis+源码+数据库+lw文档+系统+调试部署
  5. 打开Redis数据库的大门
  6. Android好书《Android9编程通俗演义》
  7. Uniprot数据库
  8. 我的2022年度状态总结(Formal ver. )
  9. sqlserver 通过触发器 自动生成报表 数据表 每小时自动生成报表
  10. 帅哥,你喜欢内设还是外设啊? ——东芝SSD Q300测评