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

怎样在网站做环评公示bt蚂蚁磁力

怎样在网站做环评公示,bt蚂蚁磁力,家乡网页设计模板,王占山 同济大学float和double主要为了科学计算和工程计算而设计,执行二进制浮点运算,这是为了在广泛的数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不适合用于需要精确结果的场合,尤其是…

float和double主要为了科学计算和工程计算而设计,执行二进制浮点运算,这是为了在广泛的数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不适合用于需要精确结果的场合,尤其是货币计算。

例如当前有1.03元,花掉0.42元后,应该还有0.61元。但是我们在使用float类型进行计算时,其结果是不准确的,如下所示:

System.out.println(1.03 - 0.42); //0.6100000000000001

使用舍入可以解决上面问题,但并不是所有的问题都能用舍入解决。例如当前总金额有1元,有0.1、0.2、0.3元的商品,从0.1开始买,直到不能支付为止:

public static void main(String[] args) {double money = 1.00;int total = 0;for(double price = 0.1; money >= price; price += 0.1) {money = money - price;total++;}System.out.println("商品购买数:"+ total);System.out.println("余额:" + money);
}

执行上述代码,其运行结果为:

商品购买数:3
余额:0.3999999999999999

使用BigDecimal代替double是可以解决上述问题的,但是出现了一个会忽略的意外,示例代码如下:

public static void main(String[] args) {final BigDecimal increasePrice = new BigDecimal(0.1);BigDecimal money = BigDecimal.valueOf(1.0);int total = 0;for (BigDecimal price = new BigDecimal("0.10"); money.compareTo(price) >= 0; price = price.add(increasePrice)) {money = money.subtract(price);total++;}System.out.println("商品购买数:" + total);System.out.println("余额:" + money);
}

执行上述代码,其运行结果为:

商品购买数:3
余额:0.3999999999999999833466546306226518936455249786376953125

可以看到其运行结果和预期的不一样,这是由于使用BigDecimal的构造方法直接来转换float或者double类型时,会存在数据值不准确的情况。如果想要计算准确的话,可以使用采用下述两种方法来创建BigDecimal对象:构建参数为字符串或者使用valueOf方法:

final BigDecimal increasePrice = new BigDecimal("0.1");
final BigDecimal increasePrice = BigDecimal.valueOf(0.1);
public static void main(String[] args) {final BigDecimal increasePrice = BigDecimal.valueOf(0.1);BigDecimal money = new BigDecimal(1.0);int total = 0;for (BigDecimal price = new BigDecimal("0.10"); money.compareTo(price) >= 0; price = price.add(increasePrice)) {money = money.subtract(price);total++;}System.out.println("商品购买数:" + total);System.out.println("余额:" + money);
}

再次执行上述代码,其运行结果为: 

商品购买数:4
余额:0.00

但是使用BigDecimal有下述三个缺点: 

  • 与基本类型相比,不方便(需要创建BigDecimal对象);
  • 速度慢
  • 直接使用构造方法转换double或者float,会存在数据不准确的情况 

除了使用BigDecimal,还可以使用int或者long,取决于涉及的数值大小,同时要自己处理十进制小数,例如上述案例中金额以分为单位,而不是以元为单位计算,就可以使用int来处理: 

public static void main(String[] args) {int money = 100;int total = 0;for (int price = 10; money >= price; price += 10) {money = money - price;total++;}System.out.println("商品购买数:" + total);System.out.println("余额:" + money);
}

总结:

  • 对于任何需要精确答案的计算任务,请不要使用float或者double。
  • 如果你想让系统来记录十进制小数点,并且不介意因为不使用基本类型而带来的不便,就请使用BigDecimal。使用BigDecimal还有一些额外的好处,它允许你完全控制舍入,每当一个操作涉及舍入的时候,他允许你从8种舍入模式中选择其一。如果你正通过法定要求的舍入行为进行业务计算,使用BigDecimal是非常方便的。
  • 如果性能非常关键,并且不介意自己记录十进制小数点,而且所涉及的数值又不太大,就可以使用int或者long。如果数值范围内没有超过9位十进制数字,就可以使用int;如果不超过18位数字,就可以使用long。如果数值可能超过18位数字,就必须使用BigDecimal。
http://www.jinmujx.cn/news/115249.html

相关文章:

  • 网站劫持代码aso推广
  • WordPress授权站资源网免费推广网站2023
  • 太原在线网站制作怎么做属于自己的网站
  • 企业网站建设 南通百度搜索流量查询
  • 怎样做免费外贸网站手机百度下载免费
  • 网站建设方案功能武汉刚刚突然宣布
  • 网站和网店的区别徐州seo外包公司
  • 网站建设什么科目正规软件开发培训学校
  • 网站pv统计方法com天堂网
  • 免费高清图片素材网站有哪些企业网站seo排名优化
  • 营销型企业网站建设体会网站设计公司多少钱
  • 想开加工厂怎么找订单北京seo加盟
  • 投资公司网站建设深圳推广公司哪家正规
  • wordpress grace 破解seo优化服务是什么意思
  • asp. net 做网站自己如何制作一个网站
  • 门户网站建设报告哦超级外链吧
  • 廊坊专门做网站无人在线观看高清视频单曲直播
  • wordpress做的学校网站自己如何制作一个小程序
  • 国外开源建站系统网站推广哪个平台最好
  • 宁国做网站中国新冠一共死去的人数
  • 无锡做网站好视频号怎么付费推广
  • 哈尔滨松北区建设局网站搜狗引擎
  • 360免费建站abc大连seo建站
  • 网站建设与开发 期末作品seo优化知识
  • 阿里云虚拟主机怎么建立网站网店seo关键词
  • 网站维护中是不是关闭网站了无锡网站建设方案优化
  • 电子商务网站和开发新闻类网站巩义网络推广公司
  • 大型网站 网站建设百度关键词推广可以自己做吗
  • wordpress博客 翻墙班级优化大师怎么用
  • 做现货黄金网站关键词优化顾问