1

我将一个数字(可能是 XX.XX 的数量格式)除以一个整数。

但是当我做 6.6 / 6 或 3.3/3 时,它给出 1.099999...,而不是 1.1。

我正在做的是,我将金额平均分配给人数,如果存在任何剩余金额,我会将额外金额添加到其中一个人。

可能是这种东西,104/6 会被划分为 17.85, 17.83, 17.83, 17.83, 17.83, 17.83 [可能不准确,只是为了说明]。

JS Bin 链接----> http://jsbin.com/amileg/1/edit

请帮助我获得正确的计算逻辑。

谢谢!!

4

2 回答 2

1

那是浮点算术,那些是舍入误差。您可以阅读内容了解更多信息。

将无限多个实数压缩为有限位数需要近似表示。尽管整数有无限多,但在大多数程序中,整数计算的结果可以存储在 32 位中。相反,给定任何固定位数,大多数实数计算将产生无法使用那么多位精确表示的量。因此,浮点计算的结果必须经常四舍五入以适应其有限表示。这种舍入误差是浮点计算的特征。

JavaScript 中的所有数字都以二进制表示为IEEE-754 Doubles,它提供了大约 14 或 15 个有效数字的精度。它们并不总是准确地表示实数,包括分数。

于 2013-06-17T19:15:59.313 回答
0

您可以使用.toFixed()

var res = (vall / tot).toFixed(2);
//input `6.6/6`: , output : `1.10`

演示----> http://jsbin.com/amileg/4/edit

于 2013-06-17T19:21:11.670 回答