double转int时精度不一致问题
来源:互联网 发布:vb打印输出九九乘法表 编辑:程序博客网 时间:2024/04/28 13:34
float和double类型的主要设计目的是为了科学计算和工程计算。它们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。float和double类型对于货币计算尤为不合适,因为要让一个float或者double精确地表示0.1(或者10的任何负数次方值)是不可能的,比如System.out.println(2.0-1.1)将会打印0.899999999999999,而不是你所希望的0.9,这种舍入错误产生的原因是浮点数实际上是用二进制系统实现的,而分数1/10在二进制系统中没有精确的表示,其道理就如同在十进制系统中无法精确表示1/3一样;再比如0.5在二进制系统中有精确表示,而0.55在二进制系统中没有精确表示。
如果定义 int a=(2.0-1.1)*100
则 a=89
所以为了避免这个问题,另加上小数 如 a=(2.0-1.1)*100 +0.01
这样就可以使结果正确
统一有问题的数据:
int a = (123.3/100)*1000;
int a=(481.0/100)*100 + 0.01;
int a=(401.5/100)*1000;
等。。。。
0 0
- double转int时精度不一致问题
- double转int精度丢失问题
- double类型转int类型,精度丢失的问题
- double转bigdecimal精度问题
- double转int问题
- 解决 java double 减 int 型 产生的精度问题
- int-float-double精度FloatDemo
- 某次double强转int时精度损失的情况以及原因分析
- Double 类型运算时的精度问题
- Double 类型运算时的精度问题
- 关于double精度问题
- double,float精度问题
- Double 精度问题总结
- double 精度问题
- BigDecimal,Double精度问题
- double 精度问题
- cout double 精度问题
- double精度问题
- 高效程序员的45个习惯之敏捷,高效软件开发之道
- oracle 11g中高级复制配置
- poj 2912(带权并查集)
- ACM-三角形
- java学习之路的自我回顾2(类)
- double转int时精度不一致问题
- NavigationController显示ToolBar
- Hihocoder 挑战赛
- ACM-Ants
- android:layout_weight的真实含义
- UVALive 6508(树状数组求逆序数)
- 谈使用Eclipse与DDMS调试Android程序的方法
- PoJ 1000
- oracle 11g streams 配置详解