<style>
*{margin: 0;padding: 0;}
.box{display:flex;width:600px;height:300px;}
.left{
flex-grow: 0.991;
width: 100px;
background: green;
}
</style>
<div class='box'>
<div class="left" id="left"></div>
<script>
console.log(document.getElementById('left').getBoundingClientRect().width) //595.484375
</script>
</div>
在 chrome 打印出来 width 为 595.484375 。 按照 flex 的规范 width 应该为 100+(500*0.991)=595.5 chrome devtools 显示的 width 为 595.48.为什么会出现这种情况啊?
1
noe132 2020-06-01 15:37:03 +08:00
猜测:根据 ieee 754 表示,0.991 转换为浮点数时无法精确表示
产生了误差 |
2
cheese 2020-06-01 16:10:40 +08:00
精度问题吧,小数无法用二进制表示,转换的时候丢失了精度
|
3
ericgui 2020-06-06 11:33:49 +08:00
网上的例子,包括官网,可以是小数,但都是 0.x
比如 0.5,0.6 0.991 肯定有个精度问题额 |