黑马程序员技术交流社区
标题:
关于double的疑惑。
[打印本页]
作者:
周胜
时间:
2011-12-12 19:01
标题:
关于double的疑惑。
本帖最后由 周胜 于 2011-12-12 19:53 编辑
double one=18100*1.12;
one为什么是20272.000000000004
应该是个整数啊。。后面怎么多个4.
作者:
胡遇潮
时间:
2011-12-12 19:20
如果对基本数据类型执行算术运算或按位运算,只要它们“比int小”(即char、byte或者short),那么在运算之前,这些值会自动转换成int。
如果你想要把结果赋值给较小的类型,就必须使用类型转换(如果要把结果赋回给较小的类型,就可能出现信息丢失)。
通常,表达式中出现的最大的数据类型决定了表达式最终结果的数据类型。
如果将一个float值与一个double值相乘,结果就是double;
如果将一个int和一个long值相加,则结果为long
作者:
孙海亮
时间:
2011-12-12 19:27
标题:
.
本帖最后由 孙海亮 于 2011-12-12 19:43 编辑
因为double是双精度浮点型,占据8个字节。有效数字最长为15位。 你把one定义成double类型,而在赋值运算符“=”右边的表达式的数据类型与其左边的变量不同时,则右边表达式的数据类型将会被自动转换成左边变量的数据类型。然后在赋值给左边的变量。
作者:
吴上储
时间:
2011-12-12 19:32
在用 double 进行运算时,经常会出现精度损失的问题,总是在一个正确值的+-0.0000001左右,
一般对double类型进行运算时,要对结果进行处理,不然对一些特殊的项目就会有影响!
作者:
余松霖
时间:
2011-12-12 19:33
1.12是小数,算出来就会以小数表示,这个值是double的一些浮点偏差
作者:
唐秀启
时间:
2011-12-12 19:34
20272.000000000004
当超出long的有效精度时,后面的数都是随机的不精确位数
作者:
周胜
时间:
2011-12-12 19:52
恩 。精度缺失问题。。了解了~多谢各位!~
作者:
王德云
时间:
2011-12-12 21:29
double只适合做科学计算,实际开发中,用BigDecimal这个类可以实现精确认计算。
作者:
颜小飞
时间:
2011-12-12 21:35
我也学习了{:soso_e100:}
作者:
黑马王金科
时间:
2012-8-16 02:09
精度问题,学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2