使用Javascript计算无舍入的文本宽度

使用Javascript计算无舍入的文本宽度,javascript,html,css,Javascript,Html,Css,我有一个div,我使用Javascript更改它的位置。然而,它是不正确的四舍五入 #您好{ 背景颜色:蓝色; 宽度:2倍; 高度:10px; 位置:绝对位置; } 点击我 函数myFunction(){ var div=document.getElementById(“hi”); div.style.left=“0px”; console.log(“BEFORE:+div.style.left”); var moveBy=109.8125; div.style.left=moveBy+'p

我有一个div,我使用Javascript更改它的位置。然而,它是不正确的四舍五入

#您好{
背景颜色:蓝色;
宽度:2倍;
高度:10px;
位置:绝对位置;
}

点击我
函数myFunction(){
var div=document.getElementById(“hi”);
div.style.left=“0px”;
console.log(“BEFORE:+div.style.left”);
var moveBy=109.8125;
div.style.left=moveBy+'px';
控制台日志(“移动方式:+moveBy”);
控制台日志(“新位置:+div.style.left”);
}

如果您确实需要防止由于舍入误差而导致的精度漂移,我建议您独立于
style
属性跟踪该值。下面是一个示例,说明如何使用:

函数myFunction(){
var div=document.getElementById(“hi”);
div.style.left=“0px”;
console.log(“BEFORE:+div.style.left”);
var moveBy=109.8125;
//将当前值作为数据属性进行跟踪,
//哪一个不会被取整
const left=div.dataset.left=parseFloat(div.dataset.left | | 0)+moveBy;
//将计算值作为样式应用
div.style.left=左+像素;
console.clear();
log(`dataset.left:${left},style.left:${div.style.left}`);
}
#您好{
背景颜色:蓝色;
宽度:2倍;
高度:10px;
位置:绝对位置;
}


单击“我”
不确定您在项目中到底想做什么,但使用
contenteditable
div对您没有帮助吗?我有一个相同的问题@AndreiIt仍然说新位置是109.813px,所以它是否将其移动109.813px?这是样式值,需要舍入。但随后的点击将根据数据值计算,该值尚未四舍五入,这意味着精度不会随着移动的累积而漂移。我已经测试过它,但它仍然不能准确移动