JavaScript中浮点数的除法

7

我试图通过除以一个变量来将屏幕宽度分成若干相等的部分,以便在webview中绘制UI界面。

然而,当这个变量为3时,在JavaScript中计算100/3的结果是33.3333333333333336,因此无法按照预期绘制第三部分,我想原因可能是商的总和超过了100%。

是否有任何好的解决方法来解决这个问题?


1
可能是重复的问题:JavaScript 的浮点数运算是否存在问题? - user395760
5个回答

15

您可以指定除法的精度:

var width = (100 / 3).toPrecision(3);

7
最好的办法就是尽可能接近目标:
(100 / 3).toFixed(2)

1

尽可能接近两个三分之一的宽度。从目标像素宽度中减去它们实际像素宽度的总和,以获取第三个切片的宽度。它可能比其他切片多一到两个像素或少一到两个像素,但在任何合理的屏幕分辨率下都不可见。


0

你可以做

Math.floor(100/3);

这将始终将小数四舍五入为最接近的较小整数,因此在您的情况下,它将其舍入为33。


那么屏幕的可用空间将会损失1% :P - Jivings

-2

100 * (1/3) 将返回 33.33333333333333。

注意:

1/3 * 100 返回 33.33333333333333

但是

100 * 1/3 返回 33.333333333333336

因此,为了安全起见,请使用括号。


100*(1/27) 返回 3.7037037037037033,1/27100 返回 3.7037037037037033,1001/27 返回 3.7037037037037037。因此,这不是括号的问题。 - zypA13510

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接