java中涉及到浮点计算,就会有误差,

float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal

public class MoneyTest{  public static void main(String[] args) {  System.out.println(2.00 - 1.10);// 0.8999999999999999  System.out.println(2.00D - 1.10D);// 0.8999999999999999  System.out.println(2.00F - 1.10F);// 0.9  System.out.println(Double.toString(2.00D));// 2.0  System.out.println(BigDecimal.valueOf(2.00).subtract(BigDecimal.valueOf(1.10)));// 0.9  System.out.println(BigDecimal.valueOf(2.00F).subtract(BigDecimal.valueOf(1.10F)));// 0.899999976158142  System.out.println(BigDecimal.valueOf(2.00D).subtract(BigDecimal.valueOf(1.10D)));// 0.9  System.out.println(new BigDecimal("2.00").subtract(new BigDecimal("1.10")));// 0.90  }  }

在这里,我介绍一种方便计算的方式:将单位 : 元 -> 分

这时,计算时 都是整型在参与计算,大大减少使用BigDecimal计算时带来的麻烦。

 /*** 将元变成分 如 0.01元 变成 1分* * @param str*            金额(元)* @return*/public static String moneyYuanToFen(String str) {
Double num = Double.parseDouble(str);
int result = (int) (num * 100);
return String.valueOf(result);
}/*** 将分变成元 100分 -> 1元* * @param amount*            金额(分)* @return*/public static String moneyFenToYuan(Long amount) {return new BigDecimal(amount).divide(new BigDecimal(100)).setScale(2).toString();}

Java中涉及到金钱计算方法相关推荐

  1. java 金钱计算_Java中涉及到金钱计算方法的两种方式

    一.不直接使用float和double计算金钱的原因 java中涉及到浮点计算,就会有误差, float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.Big ...

  2. Java中的IO技术使用总结

    请尊重他人劳动成果,请勿随意剽窃,转载请注明,谢谢!转载请注明出处:http://blog.csdn.net/evan_man/article/details/51983126          Ja ...

  3. java中excel上传_java对excel表格的上传和下载处理

    Excel表格文件的上传和下载,java中涉及到文件肯定会有io流的知识. 而excel文件就要涉及到poi技术,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为 ...

  4. JAVA中两个char类型相加_【技术干货】Java 面试宝典:Java 基础部分(1)

    海牛学院的 | 第 616 期 本文预计阅读 |18 分钟 Java 基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集合的语法,io 的语法, ...

  5. java中创建线程的四种方式及线程池详解

    众所周知,我们在创建线程时有四种方法可以用,分别是: 1.继承Thread类创建线程 2.实现Runnable接口创建线程 3.使用Callable和Future创建线程 4.使用线程池创建(使用ja ...

  6. JavaSE基础知识(九)--Java中的方法重载(涉及基本类型的重载)

    Java SE 是什么,包括哪些内容(九)? 本文内容参考自Java8标准 Java中的基本类型有一个特性:它能自动从一个"较小"的类型转换成"较大"的类型! ...

  7. java 中FreeMaker的使用(excel、word),涉及解压缩

    java 中FreeMaker的使用(excel.word),涉及解压缩 最近在项目中,涉及到很多(word.excel)导入.导出的功能,word 版的搞得好久 涉及到单选框 . 附件.文本.图片. ...

  8. java中hashcode_浅谈Java中的Hash值

    1.Hash值有什么用? HashMap.HashTable.HashSet,所以涉及到使用Hash值进行优化存储的地方,都会用到HashCode.HashCode是Key,这种计算为提高计算的性能. ...

  9. java中hashmap_Java HashMap – Java中的HashMap

    java中hashmap Java HashMap is one of the most popular Collection classes in java. Java HashMap is Has ...

  10. Java中存储金额用什么数据类型?

    很早之前, 记得一次面试, 面试官问存储金钱用什么数据类型? 当时只知道8种数据类型(boolean, byte, short, int, long, float, double, char)的我, ...

最新文章

  1. 当outlook打开附件的EXCEL表报出 文件已经损坏 但别人能打开时
  2. 计算机图形学_2020图灵奖重磅发布!两位计算机图形学先驱获奖
  3. Android 性能优化 之谈谈Java内存区域
  4. c++-内存管理-G4.9
  5. 20应用统计考研复试要点(part7)--统计学
  6. fluidity详解
  7. 修改现有站点的主机标头
  8. Django JWT认证实现
  9. Android仿华为天气绘制刻度盘
  10. 自定义Dialog宽度占满屏幕
  11. Redis BigKey
  12. python输入的字符串转换为对应的数字类型_Psychopy | 第1期:数据类型及运算符
  13. Firefox和Chrome的选择
  14. Java学习资料汇总
  15. Cadence orcad 使用MySQL搭建元件数据库及实例数据库下载
  16. 微软.NET设计上的一个错误(从.NET1.1--4.0),不知道以后.NET会不会修复这个错误...
  17. Ignite(四)-遇到的问题
  18. Noob 靶场渗透记录
  19. 从微软官网下载win10镜像.iso文件
  20. MFC对话框中使用GDI画二维码

热门文章

  1. 能不能过?(C++)
  2. 编写算法将二叉树中所有结点的左、右子树相互交换
  3. Android开发实践:设计安卓应用以计算BMI指数
  4. 一元线性回归模型系数、方差估计、检验回归效果显著性,b的置信区间,Y约为X的指数函数时,求Y关于x的回归方程
  5. 【JZOJ B组】【NOIP2013模拟】Heaven Cow与God Bull
  6. 在线PHP源码混淆、加密
  7. css-3d旋转(三维立体效果)
  8. 揭秘腾讯代码管理核心—工蜂Git系统架构
  9. TscanCode代码扫描工具
  10. 问题解决:error CS0234: 命名空间“System”中不存在类型或命名空间名“CodeDom”/“ComponentModel”(是否缺少程序集引用?)