JAVA中浮点数使用注意事项
来源:互联网 发布:sql 截断二进制数据 编辑:程序博客网 时间:2024/06/06 16:41
需要精确计算时不要使用float和double
说明:浮点数在一个范围很广的值域上提供了很好的近似,但是它不能产生精确的结果。二进制浮点数对于精确计算是非常不适合的,因为它不可能将0.1,或者10的其它任何负次幂表示为一个长度有限的二进制小数。涉及精确的数值计算(货币、金融等),建议使用int, long, BigDecimal等
示例:
不好:以下输出结果是0.6100000000000001
System.out.println(1.03 - 0.42);
推荐:需要精确计算时
BigDecimal income = new BigDecimal("1.03");BigDecimal expense = new BigDecimal("0.42");System.out.println(income.subtract(expense));
不能用浮点数作为循环变量
说明:浮点数不能为循环因子,精度问题会导致 (float)2000000000 == 2000000050为true,所以如下的循环不会执行。
for (float f = (float) 2000000000; f < 2000000050; f++) { ...}
浮点型数据判断相等不能直接使用
说明:由于浮点数在计算机表示中存在精度的问题,因此,判断2个浮点数相等不能直接使用等号可以采用如下方式:
float a =...;float b =...;if (Math.abs(a-b) < 1E-6f) { ...}
其中1E-6f为一个float极小值,实际使用时请根据情况判断精度,并且提取常量。 如果是double,请使用1E-6。
阅读全文
0 0
- JAVA中浮点数使用注意事项
- java中浮点数
- 浮点数介绍及使用注意事项
- Java中使用BigDecimal进行浮点数精确计算、超大整数、浮点数等计算
- 浮点数运算注意事项
- 浮点数注意事项
- Java中使用BigDecimal进行浮点数高精度计算
- Java中使用BigDecimal进行浮点数精确计算、超大整数、浮点数等计算,没有数位限制
- Java中使用BigDecimal进行浮点数精确计算、超大整数、浮点数等计算,没有数位限制
- Java中使用BigDecimal进行浮点数精确计算、超大整数、浮点数等计算,没有数位限制
- Java中使用BigDecimal进行浮点数精确计算、超大整数、浮点数等计算,没有数位限制
- Java中使用BigDecimal进行浮点数精确计算、超大整数、浮点数等计算,没有数位限制
- 浮点数float 处理注意事项
- 关于浮点数计算注意事项
- 浮点数表示范围注意事项
- Java中浮点数的处理
- java中浮点数的高精度运算
- Java中浮点数的正确表示
- 前端到后台ThinkPHP开发整站(1)
- linux中环境变量及环境变量配置文件详解
- 1.5.软件编程控制硬件的关键-----寄存器
- STM32之RCC有点启发1
- Linux内核发布模式与开发组织模式
- JAVA中浮点数使用注意事项
- Matplotlib.pyplot 常用方法(一)
- TCP/IP Wireshark监听 及错误代码
- Chrome developer tool介绍(javascript调试)
- mamp——搭建PHP环境
- 分享一个在canvas中的点击事件
- 循环结构程序设计 基础题
- Eclipse_解决控制台自动跳出
- hdu 2039 三角形