java遇到个算术运算符的问题求指点

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个二进制位,然后进行二进制的除法计算得到补码,然后补码倒推出源码,把商提取出来

0

5个回答

浮点数运算有些时候回丢失经度,最好Math.Round下保留二位小数

js是number.toFixed(保留的小数位)

0
weixin_42435179
weixin_42435179 浮点数运算有些时候回丢失经度,最好Math.Round下保留二位小数
大约一年之前 回复
qq_42432916
qq_42432916 可以采用浮点运算,
大约一年之前 回复
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 可以采纳了,就是这样。
大约一年之前 回复

浮点数最后一位是不精确的,对于浮点数建议指定精度,比如小数点后4位或6位,满足计算精度即可。

0

建议使用float
double会丢失精度
比如你试试0.1+0.2
会变成0.300000000000004好像

0

使用BigDecimal进行运算

0

我是这么理解的,浮点数相当于二进制的小数,跟我们平常用的十进制的小数不一样.
楼主可以看下浮点数的编码,或许就能明白

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!