Math.round(10*(Math.sqrt(20)+Math.sqrt(10))/(Math.sqrt(20)-Math.sqrt(10)))/10.0与
Math.round(10*(Math.sqrt(20)+Math.sqrt(10))/(Math.sqrt(20)-Math.sqrt(10)))/10的结果为什么一个是5.8一个是5
Jacenty,我想你应该明白Java中的自动转型,对不? 那我们今天就拿你的问题来分析下吧
知识点: 数据类型精度比较 int(整型) < double(双精度) 或者 float(浮点型)
首先 你知道 Math.round(10*(Math.sqrt(20)+Math.sqrt(10))/(Math.sqrt(20)-Math.sqrt(10))) 返回的是一个Int类型的,我们常常称为整数型,而 10.0 我们暂时认为 double 吧,所以在Java 的自动转型中有一套规则 就是按最大精度返回结果,所以返回的是 double 类型,而当除以10的时候,因为都是整数,所以失去了小数部分的精度。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。