System.out.println(10 / 3.0);
这行代码输出的是3.3333333333333335
我知道有两个知识点:
1.整数和小数进行运算的时候,整数的类型自动提升为double类型,两个double类型进行相除运算,结果得到小数(也就是3.3333333333333335),即10先自动提升为double类型,再和3.0进行除法运算
2./获取的是除法操作的商,%获取的是除法操作的余数
而我的问题是:这行代码怎么算到是3.3333333333333335?
不知道这么想对不对:按照我们平时的计算法则,10除以3的商是3,余数是1,但是10变成double和同样是double类型的3.0进行除法运算就涉及到二进制除法了,先把double这个8字节的数据类型展开成32个二进制位,然后进行二进制的除法计算得到补码,然后补码倒推出源码,把商提取出来
java遇到个算术运算符的问题求指点
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
5条回答 默认 最新
- 斯洛文尼亚旅游 2018-06-10 05:49关注
浮点数运算有些时候回丢失经度,最好Math.Round下保留二位小数
js是number.toFixed(保留的小数位)
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 (标签-matlab)
- ¥15 Marscode IDE 如何预览新建的 HTML 文件
- ¥15 K8S部署二进制集群过程中calico一直报错
- ¥15 java python或者任何一种编程语言复刻一个网页
- ¥20 如何通过代码传输视频到亚马逊平台
- ¥15 php查询mysql数据库并显示至下拉列表中
- ¥15 freertos下使用外部中断失效
- ¥15 输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?
- ¥15 devserver配置完 启动服务 无法访问static上的资源
- ¥15 解决websocket跟c#客户端通信