当前位置: 首页 > news >正文

网站名称和备案不一样软文广告属于什么营销

网站名称和备案不一样,软文广告属于什么营销,网站 如何做 同时在线,沧州响应式网站开发阿里巴巴 Java 开发手册》中提到:“为了避免精度丢失,可以使用 BigDecimal 来进行浮点数的运算”。 浮点数的运算竟然还会有精度丢失的风险吗?确实会! 示例代码: float a 2.0f - 1.9f; float b 1.8f - 1.7f; Syst…

阿里巴巴 Java 开发手册》中提到:“为了避免精度丢失,可以使用 BigDecimal 来进行浮点数的运算”。

浮点数的运算竟然还会有精度丢失的风险吗?确实会!

示例代码:

float a = 2.0f - 1.9f;
float b = 1.8f - 1.7f;
System.out.println(a);// 0.100000024
System.out.println(b);// 0.099999905
System.out.println(a == b);// false

为什么浮点数 float 或 double 运算的时候会有精度丢失的风险呢?

这个和计算机保存浮点数的机制有很大关系。我们知道计算机是二进制的,而且计算机在表示一个数字时,宽度是有限的,无限循环的小数存储在计算机时,只能被截断,所以就会导致小数精度发生损失的情况。这也就是解释了为什么浮点数没有办法用二进制精确表示。

就比如说十进制下的 0.2 就没办法精确转换成二进制小数:

// 0.2 转换为二进制数的过程为,不断乘以 2,直到不存在小数为止, // 在这个计算过程中,得到的整数部分从上到下排列就是二进制的结果。 0.2 * 2 = 0.4 -> 0 0.4 * 2 = 0.8 -> 0 0.8 * 2 = 1.6 -> 1 0.6 * 2 = 1.2 -> 1 0.2 * 2 = 0.4 -> 0(发生循环) ...

关于浮点数的更多内容,建议看一下计算机系统基础(四)浮点数这篇文章。

 BigDecimal 介绍

  1. 定义
    • BigDecimal是 Java 中的一个类,用于高精度的十进制算术运算。在处理货币、科学计算等对精度要求极高的场景中非常有用。与基本数据类型(如floatdouble)不同,BigDecimal可以精确地表示和计算浮点数,避免了浮点数在计算机中存储和运算时可能产生的精度损失问题。
  2. 构造方法
    • 可以通过多种方式构造BigDecimal对象。例如:
      • 使用字符串作为参数:BigDecimal bd = new BigDecimal("123.45");。这种方式是推荐的,因为它可以准确地表示数字的值。如果使用doublefloat值来构造BigDecimal,可能会引入不精确的值,因为doublefloat本身在存储上存在精度问题。
      • 也可以使用整数作为参数来构造,如BigDecimal bd2 = new BigDecimal(123);,这样会创建一个表示整数值的BigDecimal对象。
  3. 主要方法
    • 加法运算
      • 使用add方法实现加法。例如:
        • BigDecimal num1 = new BigDecimal("10.5");
        • BigDecimal num2 = new BigDecimal("5.5");
        • BigDecimal sum = num1.add(num2); // 结果为16.0
    • 减法运算
      • 通过subtract方法进行减法。例如:
        • BigDecimal num3 = new BigDecimal("20.0");
        • BigDecimal num4 = new BigDecimal("3.0");
        • BigDecimal difference = num3.subtract(num4); // 结果为17.0
    • 乘法运算
      • 利用multiply方法进行乘法。例如:
        • BigDecimal num5 = new BigDecimal("4.0");
        • BigDecimal num6 = new BigDecimal("3.0");
        • BigDecimal product = num5.multiply(num6); // 结果为12.0
    • 除法运算
      • 使用divide方法进行除法。需要注意的是,除法可能会出现除不尽的情况,所以可能需要指定舍入模式。例如:
        • BigDecimal num7 = new BigDecimal("7.0");
        • BigDecimal num8 = new BigDecimal("3.0");
        • BigDecimal quotient = num7.divide(num8, 2, RoundingMode.HALF_UP);。这里指定了保留两位小数并且采用四舍五入的舍入模式,结果为2.33
  4. 舍入模式(RoundingMode)
    • BigDecimal提供了多种舍入模式,这些模式在进行除法等可能产生不精确结果的运算时非常重要。
    • ROUND_UP:总是在非零舍弃部分的左边数字上加 1。例如,将1.23舍入到整数位,结果为2
    • ROUND_DOWN:总是直接舍弃非零舍弃部分。例如,将1.99舍入到整数位,结果为1
    • ROUND_CEILING:如果是正数,行为和ROUND_UP一样;如果是负数,行为和ROUND_DOWN一样。
    • ROUND_FLOOR:如果是正数,行为和ROUND_DOWN一样;如果是负数,行为和ROUND_UP一样。
    • ROUND_HALF_UP:这是最常见的四舍五入模式。如果舍弃部分大于等于 0.5,则在左边数字上加 1;否则直接舍弃。例如,将1.5舍入到整数位,结果为2;将1.4舍入到整数位,结果为1
    • ROUND_HALF_DOWN:如果舍弃部分大于 0.5,则在左边数字上加 1;否则直接舍弃。与ROUND_HALF_UP的区别在于,当舍弃部分正好是 0.5 时,ROUND_HALF_DOWN是直接舍弃,而ROUND_HALF_UP是进位。例如,将1.5舍入到整数位,结果为1
  5. 比较操作
    • 可以使用compareTo方法来比较两个BigDecimal对象的大小。
    • 例如:
      • BigDecimal num9 = new BigDecimal("5.0");
      • BigDecimal num10 = new BigDecimal("3.0");
      • int result = num9.compareTo(num10);。如果num9大于num10result的值为1;如果num9等于num10result的值为0;如果num9小于num10result的值为 - 1
  6. 应用场景
    • 金融领域:在处理货币金额计算时,由于货币的精度要求很高,不能有丝毫的误差。例如银行账户的余额计算、交易金额计算等。
    • 科学计算:在一些对精度要求极高的科学计算场景中,如物理实验数据处理、高精度的数学模型计算等,BigDecimal能够提供准确的计算结果。

 BigDecimal 常见方法:

创建

我们在使用 BigDecimal 时,为了防止精度丢失,推荐使用它的BigDecimal(String val)构造方法或者 BigDecimal.valueOf(double val) 静态方法来创建对象。

《阿里巴巴 Java 开发手册》对这部分内容也有提到,如下图所示。

 

 大小比较:

a.compareTo(b) : 返回 -1 表示 a 小于 b,0 表示 a 等于 b , 1 表示 a 大于 b

BigDecimal a = new BigDecimal("1.0");
BigDecimal b = new BigDecimal("0.9");
System.out.println(a.compareTo(b));// 1

通过 setScale方法设置保留几位小数以及保留规则。保留规则有挺多种,不需要记,IDEA 会提示。

BigDecimal m = new BigDecimal("1.255433");
BigDecimal n = m.setScale(3,RoundingMode.HALF_DOWN);
System.out.println(n);// 1.255

 

 

 

http://www.yayakq.cn/news/353537/

相关文章:

  • 网站怎么申请支付宝接口做静态网站成本
  • 广州网站建设正规公司wordpress标签云怎么添加
  • 域名展示网站源码网站制作明细清单
  • 沈阳做网站哪家最便宜四川建设银行手机银行下载官方网站下载安装
  • 网站开发申请报告wordpress 免费APP
  • 电脑手机自适应网站的建设提供大良网站建设
  • 网站模板怎么设计软件在线api
  • 西数 网站建设屏蔽网页 的网站备案
  • 编程学习入门网站可以合成装备的传奇手游
  • 合肥网站建设公司 千鸟闪闪字体设计网页
  • 中国建设银行网站慢php 开源企业网站
  • 计算机网站建设好不好怎么做企业网站排名
  • 石家庄整站优化技术上海开本建设工程有限公司
  • 做照片书网站好网站注册局
  • 宝贝做网站木马设计
  • 网站排名总是不稳定wordpress 08影院
  • 镇江品牌网站建设邵阳学院研究生与学科建设处网站
  • 南京网站维护公司有哪些wordpress 当前页面 信息 输出
  • 7万字短篇小说哪家网站做的好系统集成项目管理中级职称
  • 株洲网站建设网站建设北京公司车牌指标
  • 瀑布流响应式网站模板青岛网站制作
  • 网站开发培训机构哪个好爱网站免费一站二站
  • 做网站用什么插件怎样建设网站施工
  • 做爰在线网站北京网站建设套餐
  • 可以免费建手机网站建站行业解决方案
  • 可以做早安图片的网站响应式网站建设多少钱
  • 东莞市微信网站建设品牌外贸网站改版公司哪家好
  • 网站做下载功能制作一个网页需要花钱吗
  • 江苏省建设网站一号通亚马逊卖家可以做促销的网站
  • 南昌网站seo中小企业建站是什么