今天在写段代码模拟计算器的时候,偶然发现,当我进行小数运算的时候,竟然出现了令我惊讶的结果,后来问了问度娘,才晓得,原来这里面还有点知识呢,下面是介绍:

你猜下面几句的结果是多少?

 public class  Demo{
@Test
public void demo3() {
System.out.println(1 - 0.42);
System.out.println(2.4 + 1.2);
System.out.println(4.015 * 100);
System.out.println(123.1 / 100);
}
}

但我想告诉你,在控制台上输出的结果是:

0.5800000000000001
3.5999999999999996
401.49999999999994
1.2309999999999999

那么对应的解决方案是啥呢?

我这里给出了一段代码:

 public class Demo{
@Test
public void demo3() {
BigDecimal bd = new BigDecimal("1");
System.out.println(bd.subtract(new BigDecimal("0.42")));
}
}

这段代码就告诉了你,当你用到浮点数的时候,为避免出现精度失真的情况,可以用BigDecimal来计算,注意:BigDecimal的构造器中,你传入的是字符串哟!!

如果你还想进行加法、乘法、除法的话,推荐你看看JDK中java.lang.math这个包下的BigDecimal具体方法,可以满足你的一般需求(包括小数点后保留几位等),当然,要是你觉得这样还是不够简便的话,你完全可以自己写个tool类,来专门完成你的运算,内部就用BigDecimal来实现,用的时候,你想怎么调用怎么调用(前提是你的tool类中要封装好这些方法)。

嘿嘿,就这些了!!

最新文章

  1. virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)
  2. C++11笔记<一>
  3. code first 创建和初始化数据库
  4. mac攻略(六) -- mac根目录分析
  5. KnockoutJS 3.X API 第三章 计算监控属性(2) 可赋值的计算监控属性
  6. 高端黑链SEO—恶意JS脚本注入访问伪随机域名
  7. BST树
  8. Hibernate解决n+1问题
  9. IP的正则表达式
  10. SharePoint 2013 配置我的网站 图文引导
  11. shell脚本实现仅保留某目录下最新的两个文件
  12. Android SQLite的使用1(非原创)
  13. 新学了一个用python编写的简单的百度贴吧帖子的爬虫
  14. Android4.2中Phone的P-sensor的应用的分析。
  15. html5学习(一) video字段
  16. 02-C#(基础)基本的定义和说明
  17. 基于文本图形(ncurses)的文本搜索工具 ncgrep
  18. Python操作Redis及连接方式
  19. poj1456
  20. 搭建iview环境

热门文章

  1. (Java)利用ListIterator(iterator 重复器/迭代器的子接口) 操作ArrayList
  2. DNS(三)DNS SEC(域名系统安全扩展)
  3. [原创]使用命令行工具提升cocos2d-x开发效率(二)之CocosBuilder篇
  4. uva 12296 Pieces and Discs
  5. HDU-4608 I-number 枚举
  6. ovirt user guide
  7. hdu4777-Rabbit Kingdom
  8. 软件开发中的单一职责(转至INFOQ)
  9. 起底多线程同步锁(iOS)
  10. UITableView性能优化