开发者社区> 问答> 正文

在Java中使用Math.round语句

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 

展开
收起
爵霸 2016-06-02 10:32:42 2102 0
1 条回答
写回答
取消 提交回答
  • 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的时候,因为都是整数,所以失去了小数部分的精度。

    2019-07-17 19:24:10
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载